Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 火花对纱罐上传问题的影响_Java_Hadoop_Mapreduce_Apache Spark - Fatal编程技术网

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

我正在尝试使用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 --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