Java- spark上线上传问题


0

我试图运行一个简单的 map /减少Java程序使用 spark放电 Yarn (Cloudera Hadoop 5.2上CCENOS)。我试过两种不同的方法。第一种方法是:

YARN_CONF_DIR=/usr/lib/hadoop-yarn/etc/hadoop/; 
/var/tmp/spark/spark-1.4.0-bin-hadoop2.4/bin/spark-submit --class MRContainer --master yarn-cluster --jars /var/tmp/spark/spark-1.4.0-bin-hadoop2.4/lib/spark-assembly-1.4.0-hadoop2.4.0.jar  simplemr.jar

此方法给出以下错误:

诊断:应用程序U 0007失败2次

然后我试着不带 jars:

YARN_CONF_DIR=/usr/lib/hadoop-yarn/etc/hadoop/; 
/var/tmp/spark/spark-1.4.0-bin-hadoop2.4/bin/spark-submit --class MRContainer --master yarn-cluster simplemr.jar
诊断:应用程序U0008失败2次

我尝试从hdfs://users/.sparkstaging中删除所有的.jar并重新提交,但这没有帮助。

2 答案

0

通过将spark-assembly.jar复制到每个节点的hdfs目录中,然后将其作为参数传递给spark submit--conf spark.yarn.jar,解决了这个问题。命令如下:

hdfs dfs -copyFromLocal /var/tmp/spark/spark-1.4.0-bin-hadoop2.4/lib/spark-assembly-1.4.0-hadoop2.4.0.jar /user/spark/spark-assembly.jar 

/var/tmp/spark/spark-1.4.0-bin-hadoop2.4/bin/spark-submit --class MRContainer --master yarn-cluster --conf spark.yarn.jar=hdfs:///user/spark/spark-assembly.jar simplemr.jar


0

如果出现此错误,则意味着您正在使用--jars选项上载程序集jar,或者手动复制到每个节点中的hdfs。

在 yarn 集群模式下,spark submit会自动将装配jar上传到一个分布式缓存中,所有 executor容器都会从中读取,因此不需要手动将装配jar复制到所有节点(或通过--jar传递)。

尝试从.sparkstaging目录中删除所有旧的jar,然后再试一次,它应该可以 job。


我来回答