[英]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.