Java 火花对纱罐上传问题的影响
我正在尝试使用spark over Thread(CentOS上的Cloudera Hadoop 5.2)运行一个简单的Map/Reduce java程序。我试过两种不同的方法。第一种方法是:Java 火花对纱罐上传问题的影响,java,hadoop,mapreduce,apache-spark,Java,Hadoop,Mapreduce,Apache Spark,我正在尝试使用spark over Thread(CentOS上的Cloudera Hadoop 5.2)运行一个简单的Map/Reduce java程序。我试过两种不同的方法。第一种方法是: 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 --ja
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
此方法会产生以下错误:
诊断:应用程序_1434177111261_0007失败2次
由于AM,appattempt_1434177111261_0007_000002的集装箱已退出
exitCode:-1000原因:资源
hdfs://kc1ltcld29:9000/user/myuser/.sparkStaging/application_1434177111261_0007/spark-assembly-1.4.0-hadoop2.4.0.jar
在src文件系统上更改(预期为143449639128,实际为143449642191
然后我试着不带--罐子:
诊断:应用程序_1434177111261_0008失败2次
由于AM,appattempt_1434177111261_0008_000002的集装箱已退出
exitCode:-1000原因:文件不存在:
hdfs://kc1ltcld29:9000/user/myuser/.sparkStaging/application_1434177111261_0008/spark-assembly-1.4.0-hadoop2.4.0.jar
.尝试失败..应用程序失败。
ApplicationMaster主机:不适用
ApplicationMaster RPC端口:-1
队列:root.myuser
开始时间:1434549879649
最终状态:失败
跟踪URL:
user:myuser线程“main”org.apache.spark.sparkeexception:应用程序中的异常
应用程序_1434177111261_0008已完成,状态为失败
位于org.apache.spark.deploy.warn.Client.run(Client.scala:841)
位于org.apache.spark.deploy.warn.Client$.main(Client.scala:867)
位于org.apache.spark.deploy.warn.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(Method.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.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 然后重新提交,但没有帮助。通过将spark-assembly.jar复制到每个节点的hdfs上的目录中,然后将其作为参数传递给spark submit--conf spark.warn.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
如果您遇到此错误,则表示您正在使用--jars选项上载程序集jar,或者手动复制到每个节点中的hdfs。 我采用了这种方法,它对我很有效 在纱线集群模式下,Spark submit自动将程序集jar上传到所有执行器容器读取的分布式缓存中,因此无需手动将程序集jar复制到所有节点(或通过--jars传递)。 在您的HDFS中似乎有两个版本的同一个jar 尝试从.sparkStaging目录中删除所有旧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