[英]Why spark-submit fails with `spark.yarn.stagingDir` with master yarn and deploy-mode cluster
当我提供spark.yarn.stagingDir
来提交火花时,我遇到了一个场景,它开始失败,并且没有提供有关根本原因的任何线索,我花了很长时间弄清楚它是由于spark.yarn.stagingDir
参数引起的。 为什么在提供spark.yarn.stagingDir
这个参数时spark-submit失败?
在此处查看相关问题以获取更多详细信息
失败的命令:
spark-submit \
--conf "spark.yarn.stagingDir=/xyz/warehouse/spark" \
--queue xyz \
--class com.xyz.TestJob \
--master yarn \
--deploy-mode cluster \
--conf "spark.local.dir=/xyz/warehouse/tmp" \
/xyzpath/java-test-1.0-SNAPSHOT.jar
当我删除spark.yarn.stagingDir
,它开始工作:
spark-submit \
--queue xyz \
--class com.xyz.TestJob \
--master yarn \
--deploy-mode cluster \
--conf "spark.local.dir=/xyz/warehouse/tmp" \
/xyzpath/java-test-1.0-SNAPSHOT.jar
异常stacktrace:
应用程序application_1506717704791_145448的状态为org.apache.spark.deploy.yarn.Client $ .main(Client.scala:1213)的org.apache.spark.deploy.yarn.Client.run(Client.scala:1167)处于失败状态org.apache.spark.deploy.yarn.Client.main(Client.scala)位于sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect。位于org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$的java.lang.reflect.Method.invoke(Method.java:498)的DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) runMain(SparkSubmit.scala:738)
当我将spark.yarn.stagingDir
设置为/tmp
时,我遇到了完全相同的问题(一旦删除了这个非常配置的条目,它就可以正常工作)。
我的解决方案是指定完整的HDFS路径,例如hdfs://hdfs_server_name/tmp
而不是仅/tmp
。 希望对你有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.