尽管已设置 spark.yarn.conf,但仍上传了 Spark 程序集文件

Spark assembly file uploaded despite spark.yarn.conf being set

我有时通过相对较慢的连接使用 spark-submit 将作业提交到 Yarn 上的 Spark 集群 运行。为了避免为每个作业上传 156MB 的 spark-assembly 文件,我将配置选项 spark.yarn.jar 设置为 HDFS 上的文件。但是,这并没有避免上传,而是从HDFS Spark目录中取出程序集文件并将其复制到应用程序目录中:

$:~/spark-1.4.0-bin-hadoop2.6$ bin/spark-submit --class MyClass --master yarn-cluster --conf spark.yarn.jar=hdfs://node-00b/user/spark/share/lib/spark-assembly.jar my.jar
[...]    
15/07/06 21:25:43 INFO yarn.Client: Uploading resource hdfs://node-00b/user/spark/share/lib/spark-assembly.jar -> hdfs://nameservice1/user/XXX/.sparkStaging/application_1434986503384_0477/spark-assembly.jar

本来以为汇编文件应该是在HDFS里面拷贝过来的,结果好像又下载了又上传了,适得其反。有什么提示吗?

两个HDFS必须是同一个系统。在此处查看相关代码:

https://github.com/apache/spark/blob/37bf76a2de2143ec6348a3d43b782227849520cc/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala#L1308

https://github.com/apache/spark/blob/master/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala#L1308

为什么你不能在 nameservice1 HDFS 上安装 spark assembly jar?