当前位置: 首页 > 知识库问答 >
问题:

为什么火花提交失败的'spark.yarn.stagingDir'与主纱线和部署模式集群

邢飞白
2023-03-14

我在提供spark.yarn时遇到了一个场景。stagingDir(stagingDir)到spark submit(spark提交)开始失败,它没有给出任何关于根本原因的线索,我花了很长时间才弄清楚这是因为spark.yarn(spark.yarn)。stagingDir参数。为什么spark submit在supplyspark.yarn时失败。stagingDir此参数?

在此处查看相关问题以获取更多详细信息

失败的命令:

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

当我移除火花线时。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

异常堆栈跟踪:

应用程序应用程序_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)在sun.reflect.NativeMethodAccessorImpl上完成,状态为失败。sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:738)

共有1个答案

单于扬
2023-03-14

我在设置spark.yarn时遇到了完全相同的问题。stagingDir作为tmp(当我删除这个配置条目时,它工作得很好)。

我的解决方案是指定完整的HDFS路径,如hdfs://hdfs_server_name/tmp而不仅仅是tmp。希望它对你有用。

 类似资料:
  • 我正在从我的开发机器上启动spark-submit。 根据在YARN文档上运行Spark,我应该在env var或上为hadoop集群配置提供一个路径。这就是它变得棘手的地方:如果我将任务发送到远程YARN服务,为什么这些文件夹必须存在于我的本地机器上?这是否意味着spark-submit必须位于集群内部,因此我不能远程启动spark任务?如果没有,我应该用什么填充这些文件夹?我应该从任务管理器服

  • 我可以从IDE(远程)编程运行这个程序吗?我使用Scala-IDE。我寻找一些代码来遵循,但仍然没有找到合适的 我的环境:-Cloudera 5.8.2[OS redhat 7.2,kerberos 5,Spark2.1,scala 2.11]-Windows 7

  • 我试图通过以下命令向CDH纱线集群提交spark作业 我试过几种组合,但都不起作用。。。现在,我的本地/root以及HDFS/user/root/lib中都有所有poi JAR,因此我尝试了以下方法 如何将JAR分发到所有集群节点?因为上面这些都不起作用,作业仍然无法引用该类,因为我一直收到相同的错误: 同样的命令也适用于“--master本地”,但没有指定--jar,因为我已经将我的jar复制到

  • 当我使用spark-submit with master yarn和deploy-mode cluster提交spark作业时,它不会打印/返回任何applicationId,一旦作业完成,我必须手动检查MapReduce jobHistory或spark HistoryServer来获取作业细节。 我的集群被许多用户使用,在jobHistory/HistoryServer中找到我的作业需要很多时

  • 我正在学习Spark的基础知识,为了测试我的Pyspark应用程序,我在AWS上用Spark、Yarn、Hadoop、Oozie创建了一个EMR实例。我成功地能够使用spark-submit从驱动程序节点执行一个简单的pyspark应用程序。我有一个默认的/etc/spark/conf/spark-default.conf文件,该文件是由AWS使用Yarn资源管理器创建的。一切运行良好,我可以监测

  • 我提交一个火花作业到dataproc这样: gcloud dataproc作业提交spark--cluster=$cluster--region=$region--properties spark。罐。packages=com。谷歌。云spark:spark-bigquery-with-dependencies_2.11:0.19.1,spark。提交deployMode=cluster——类路径