我正在尝试在 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
但是门票仍在营业!
答案 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();