spark python提交错误:文件不存在:pyspark.zip

ecfdbz9o  于 2021-05-29  发布在  Hadoop
关注(0)|答案(5)|浏览(727)

我正在尝试提交pythonspark在yarn集群模式下的应用程序。

Seq(System.getenv("SPARK_HOME")+"/bin/spark-submit","--master",sparkConfig.getString("spark.master"),"--executor-memory",sparkConfig.getString("spark.executor-memory"),"--num-executors",sparkConfig.getString("spark.num-executors"),"python/app.py") !

我有以下错误,
诊断:文件不存在:hdfs://:8020/user/hdfs/.sparkstaging/application\u 123456789\u 0138/pyspark.zip java.io.filenotfoundexception:文件不存在:hdfs://:8020/user/hdfs/.sparkstaging/application\u 123456789\u 0138/pyspark.zip
我发现https://issues.apache.org/jira/browse/spark-10795
但票还是开着的!

gdrx4gfi

gdrx4gfi1#

在我处理scala作业的经验中,我看到当代码试图在某个地方设置master(“local”)时,yarn cluster模式会出现这种错误。请尝试删除对设置本地“主控”的任何引用。
同样,我的答案是基于scala行为的,但希望这能有所帮助。

wgxvkvu9

wgxvkvu92#

尝试将hdfs name node属性添加到yarn-site.xml:

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://your-name-hode-host-port:8989</value>
</property>

确保yarn_conf_dir env变量指向yarn-site.xml目录

oyjwcjzk

oyjwcjzk3#

你是否未能创建一个合适的spark上下文?我怀疑这就是问题所在。我还更新了https://issues.apache.org/jira/browse/spark-10795

djmepvbi

djmepvbi4#

当您试图使用部署模式“cluster”触发提交作业,并且试图将master设置为“local”时,就会发生这种情况;例如。

val sparkConf = new SparkConf().setAppName("spark-pi-app").setMaster("local[10]");

您有两个选项:选项#1:将上面的行更改为:

val sparkConf = new SparkConf().setAppName("spark-pi-app");

把你的工作

./bin/spark-submit --master yarn --deploy-mode cluster --driver-memory 512m --executor-memory 512m --executor-cores 1 --num-executors 3 --jars hadoop-common-{version}.jar,hadoop-lzo-{version}.jar --verbose --queue hadoop-queue --class "SparkPi" sparksbtproject_2.11-1.0.jar

选项#2:以“客户端”的方式提交部署模式下的作业

./bin/spark-submit --master yarn --deploy-mode client --driver-memory 512m --executor-memory 512m --executor-cores 1 --num-executors 3 --jars hadoop-common-{version}.jar,hadoop-lzo-{version}.jar --verbose --queue hadoop-queue --class "SparkPi" sparksbtproject_2.11-1.0.jar
oxf4rvwz

oxf4rvwz5#

我在这里回答了这个问题https://stackoverflow.com/a/55457870/3357812. 对我来说,关键是spark.hadoop.fs.defaultfs必须在python内部的sparkconf中设置。

yarn_conf = SparkConf().setAppName(_app_name) \
                    .setMaster("yarn") \
                    .set("spark.executor.memory", "4g") \
                    .set("spark.hadoop.fs.defaultFS", "hdfs://{}:8020".format(_fs_host)) \
                    .set("spark.hadoop.yarn.resourcemanager.hostname", _rm_host)\
                    .set("spark.hadoop.yarn.resourcemanager.address", "{}:8050".format(_rm_host))

相关问题