복붙노트

[HADOOP] hadoop 클러스터의 모든 노드에서 pyspark 작업을 실행할 수 없습니다.

HADOOP

hadoop 클러스터의 모든 노드에서 pyspark 작업을 실행할 수 없습니다.

요약 : python-spark 작업을 hadoop 클러스터의 모든 노드에서 실행할 수 없습니다. hadoop 'spark-1.5.2-bin-hadoop2.6'에 대한 스파크를 설치했습니다. Java Spark 작업을 시작할 때로드가 발생합니다 python spark 작업을 시작할 때 모든 노드에 분산되어 하나의 노드 만로드됩니다.

설정:

나는 Gutenberg 파일 (고마워, Johannes!)을 hdfs에 복사하고 파일의 하위 세트 ( 'e'로 시작하는 파일)에서 java와 python을 사용하여 단어 수를 시도합니다.

파이썬 :

단어 개수를 수행하기 위해 홈 브루 크 파이썬 스크립트 사용하기 :

/opt/spark/bin/spark-submit wordcount.py --master yarn-cluster \
    --num-executors 4 --executor-cores 1

파이썬 코드는 4 개의 파티션을 할당합니다 :

tt=sc.textFile('/user/me/gutenberg/text/e*.txt',4)

60 초 동안 4 개의 노드에로드하십시오.

자바:

스파크 배포판에서 찾은 JavaWordCount 사용 :

/opt/spark/bin/spark-submit --class JavaWordCount --master yarn-cluster \
    --num-executors 4 jwc.jar '/user/me/gutenberg/text/e*.txt'

결론 : 자바 버전은 클러스터 전체에로드를 분산시키고 파이썬 버전은 하나의 노드에서 실행됩니다.

질문 : 파이썬 버전을 가져 와서 모든 노드에로드를 분산시키는 방법은 무엇입니까?

해결법

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

    1.스파크 제출

    스파크 제출

    ./bin/spark-submit \
      --class <main-class>
      --master <master-url> \
      --deploy-mode <deploy-mode> \
      --conf <key>=<value> \
      ... # other options
      <application-jar> \
      [application-arguments]
    

    다음은 매개 변수 위치에서 scala / java submit과 다른 점입니다.

    대신 아래 명령을 사용해야합니다. / opt / spark / bin / spark-submit-마스터 얀-클러스터 wordcount.py     --num-executors 4-실행자 코어 1

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

    2.Shawn Guo가 제안한 것처럼 파이썬 프로그램 이름은 실제로 잘못된 위치에있었습니다. 이런 식으로 실행되어야합니다 :

    Shawn Guo가 제안한 것처럼 파이썬 프로그램 이름은 실제로 잘못된 위치에있었습니다. 이런 식으로 실행되어야합니다 :

    /opt/spark/bin/spark-submit --master yarn-cluster --num-executors 4 
           --executor-cores 1 wordcount.py
    

    그러면 노드에이로드가 발생합니다.

  3. from https://stackoverflow.com/questions/34310174/cant-get-pyspark-job-to-run-on-all-nodes-of-hadoop-cluster by cc-by-sa and MIT license