Spark Python提交错误:文件不存在:pyspark.zip

时间:2016-01-06 11:59:07

标签: python hadoop apache-spark

我正在尝试在 yarn-cluster 模式下提交python spark应用程序。

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:// XXXXXX:8020 /用户/ HDFS / .sparkStaging / application_123456789_0138 / pyspark.zip   java.io.FileNotFoundException:文件不存在:   HDFS:// XXXXXX:8020 /用户/ HDFS / .sparkStaging / application_123456789_0138 / pyspark.zip

我找到了https://issues.apache.org/jira/browse/SPARK-10795

但是门票仍在营业!

5 个答案:

答案 0 :(得分:2)

根据我对scala作业的经验,我已经看到,当代码尝试在某处设置setMaster(“local”)时,yarn-cluster集群模式会出现此错误。 请尝试删除任何有关设置本地“主”的参考。

同样,我的回答是基于scala行为,但希望这会有所帮助。

答案 1 :(得分:2)

当您尝试使用部署模式“群集”激发提交作业并且您尝试将master设置为“本地”时,会发生这种情况;例如

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:使用deploy-mode将您的作业提交为“client”

./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

答案 2 :(得分:0)

您是否未能创建适当的火花背景?我怀疑这是问题所在。我还更新了https://issues.apache.org/jira/browse/SPARK-10795

答案 3 :(得分:0)

尝试将HDFS名称节点属性添加到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目录

答案 4 :(得分:0)

我在Send custom HTTP request header with HTML5 audio tag处回答了这个问题。对我来说,关键是必须在Python的SparkConf中设置spark.hadoop.fs.defaultFS。

const audio = document.createElement('audio');
audio.src = 'file.wav';
audio.play();