복붙노트

[HADOOP] --jars를 사용하여 spark-submit yarn-cluster가 작동하지 않습니까?

HADOOP

--jars를 사용하여 spark-submit yarn-cluster가 작동하지 않습니까?

다음 명령을 통해 Spark 작업을 CDH 원사 클러스터에 제출하려고합니다.

몇 가지 조합을 시도했지만 모두 작동하지 않습니다 ... 이제 내 로컬 / root와 HDFS / user / root / lib에 모든 poi jar가 있으므로 다음을 시도했습니다.

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

항아리를 / opt / cloudera / parcels / CDH / lib / spark / lib에 복사 했으므로 --jars를 지정하지 않고 동일한 명령이 "--master local"과 함께 작동합니다.

그러나 원사 클러스터 모드의 경우 외부 항아리를 모든 클러스터에 배포해야하지만 위 코드는 작동하지 않습니다.

도와 주셔서 감사합니다.

추신. spark 1.3.0과 함께 CDH5.4.2를 사용하고 있습니다.

해결법

  1. ==============================

    1.Spark Submit의 도움말 옵션에 따르면

    Spark Submit의 도움말 옵션에 따르면

    참고 : 이것은 hadoop streaming의 -file 옵션과 유사하며 매퍼 / 리듀서 스크립트를 슬레이브 노드로 전송합니다.

    --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.
    

    이것이 도움이되기를 바랍니다.

  2. ==============================

    2.이 글타래에 게시 된 솔루션을 사용해 보셨습니까? 원사 용기 업로드 문제 발생

    이 글타래에 게시 된 솔루션을 사용해 보셨습니까? 원사 용기 업로드 문제 발생

    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
    
  3. from https://stackoverflow.com/questions/31602128/spark-submit-yarn-cluster-with-jars-does-not-work by cc-by-sa and MIT license