spark关于jarn-jar上传问题的研究

cld4siwp  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(411)

我正在尝试使用sparkoveryarn(centos上的clouderahadoop5.2)运行一个简单的map/reducejava程序。我试过两种不同的方法。第一种方法如下:

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 1434177111261 \u 0007失败2次,原因是appattempt的am容器\u 1434177111261 \u 0007 \u000002退出,退出代码:-1000,原因是:资源hdfs://kc1ltcld29src文件系统上的:9000/user/myuser/.sparkstaging/application\u 1434177111261\u 0007/spark-assembly-1.4.0-hadoop2.4.0.jar已更改(应为143449639128,是143449642191
然后我试着不带——jar:

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

诊断:应用程序\u 1434177111261 \u 0008失败2次,原因是appattempt的am容器\u 1434177111261 \u 0008 \u000002退出,退出代码为:-1000,原因是:文件不存在:hdfs://kc1ltcld29:9000/user/myuser/.sparkstaging/application\u 1434177111261\u 0008/spark-assembly-1.4.0-hadoop2.4.0.jar。尝试失败。。应用程序失败。applicationmaster主机:不适用applicationmaster rpc端口:-1队列:root.myuser开始时间:143449879649最终状态:跟踪失败url:http://kc1ltcld29:8088/cluster/app/application\u 1434177111261\u 0008 user:myuser线程“main”org.apache.spark.sparkeexception:application application\u 1434177111261\u 0008已完成,状态为failed在org.apache.spark.deploy.yarn.client.run(client。scala:841)在org.apache.spark.deploy.yarn.client$.main(client。scala:867)位于org.apache.spark.deploy.yarn.client.main(client.scala)的sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)的sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)。java:57)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:601)在org.apache.spark.deploy.sparksubmit$.org$apache$spark$deploy$sparksubmit$$runmain(sparksubmit)。scala:664)在org.apache.spark.deploy.sparksubmit$.dorunmain$1(sparksubmit。scala:169)在org.apache.spark.deploy.sparksubmit$.submit(sparksubmit。scala:192)位于org.apache.spark.deploy.sparksubmit$.main(sparksubmit.com)。scala:111)在org.apache.spark.deploy.sparksubmit.main(sparksubmit.scala)15/06/17 10:04:57 info util.utils:shutdown hook调用15/06/17 10:04:57 info util.utils:删除目录/tmp/spark-2aca3f35-abf1-4e21-a10e-4778a039d0f4型
我试着从中删除所有的.jarhdfs://users//.sparkstaging 重新提交,但没用。

waxmsbnn

waxmsbnn1#

通过将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
kgqe7b3p

kgqe7b3p2#

如果出现此错误,则意味着您正在使用--jars选项上载程序集jar或手动复制到每个节点中的hdfs。我遵循了这个方法,它对我很有效。
在yarn集群模式下,spark submit会自动将程序集jar上传到所有executor容器读取的分布式缓存中,因此无需手动将程序集jar复制到所有节点(或通过--jars传递)。在您的hdfs中似乎有两个版本的相同jar。
尝试从.sparkstaging目录中删除所有旧jar,然后再试一次,应该可以。

相关问题