我遇到了一个场景,当我提供spark.yarn.stagingDir
火花 - 提交它开始失败并且它没有提供关于根本原因的任何线索,我花了很长时间才弄清楚它是什么' s因为spark.yarn.stagingDir
参数。当提供spark.yarn.stagingDir
此参数时,为什么spark-submit失败?
查看相关问题here了解详情
失败的命令:
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
异常堆栈跟踪:
应用程序application_1506717704791_145448失败了 状态 在org.apache.spark.deploy.yarn.Client.run(Client.scala:1167) 在org.apache.spark.deploy.yarn.Client $ .main(Client.scala:1213) 在org.apache.spark.deploy.yarn.Client.main(Client.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 在org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain(SparkSubmit.scala:738)
答案 0 :(得分:1)
当我将spark.yarn.stagingDir
设置为/tmp
时,我遇到了完全相同的问题(当我删除了这个非常配置的条目后,它工作得很好)。
我的解决方案是指定完整的HDFS路径,例如hdfs://hdfs_server_name/tmp
,而不仅仅是/tmp
。希望它对您有用。