使用--jars的spark-submit yarn-cluster不起作用?

时间:2015-07-24 04:20:49

标签: java hadoop apache-spark yarn cloudera-cdh

我正尝试通过以下命令向CDH纱线群提交火花作业

我尝试了几种组合,但一切都行不通...... 我现在所有的poi jar都位于我的本地/ root,以及HDFS / user / root / lib,因此我尝试了以下

spark-submit --master yarn-cluster --class "ReadExcelSC" ./excel_sc.jar --jars /root/poi-3.12.jars, /root/poi-ooxml-3.12.jar, /root/poi-ooxml-schemas-3.12.jar

spark-submit --master yarn-cluster --class "ReadExcelSC" ./excel_sc.jar --jars file:/root/poi-3.12.jars, file:/root/poi-ooxml-3.12.jar, file:/root/poi-ooxml-schemas-3.12.jar

spark-submit --master yarn-cluster --class "ReadExcelSC" ./excel_sc.jar --jars hdfs://mynamenodeIP:8020/user/root/poi-3.12.jars,hdfs://mynamenodeIP:8020/user/root/poi-ooxml-3.12.jar,hdfs://mynamenodeIP:8020/user/root/poi-ooxml-schemas-3.12.jar

如何将jar传播到所有群集节点?因为以上都没有工作,并且工作仍然以某种方式无法引用该类,因为我不断得到同样的错误:

java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/WorkbookFactory

相同的命令与" - master local" 一起使用,而不指定--jars,因为我已将我的jar复制到/ opt / cloudera / parcels / CDH / LIB /火花/ lib目录下。

但是对于纱线群集模式,我需要将外部jar分发给所有群集,但上面的代码不起作用。

感谢您的帮助,谢谢。

P.S。我正在使用CDH5.4.2和spark 1.3.0

2 个答案:

答案 0 :(得分:3)

根据Spark Submit的帮助选项

  • - jars包含要包含在驱动程序和执行程序类路径中的本地jar。 [它只会设置路径]

  • ---文件将复制你申请所需的罐子运行到执行者节点的所有工作目录[它会将你的罐子运送到
    工作目录]

注意:这类似于hadoop流中的-file选项,它将mapper / reducer脚本传输到从属节点。

所以尝试使用--files选项。

$ spark-submit --help
Options:
  --jars JARS                 Comma-separated list of local jars to include on the driver
                              and executor classpaths.
  --files FILES               Comma-separated list of files to be placed in the working
                              directory of each executor.

希望这会有所帮助

答案 1 :(得分:0)

您是否尝试过此主题中发布的解决方案: Spark on yarn jar upload problems

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