2017-02-23 2 views
1

spark-submit 명령을 사용하여 32 코어, 64GB 서버에서 pyspark 응용 프로그램을 실행하고 있습니다. 응용에java.lang.OutOfMemoryError 가져 오기 : pyspark 응용 프로그램 제출시

단계 : =로드

  1. DF1 CSV 파일에서 500 만 세트 (필드 1, 2 필드, FIELD3, 입력란 4).

  2. df2 = mongodb (spark mongo 어댑터 사용)에서 500 만 개의 항목을로드하십시오 (field1, field2, field3).

  3. 왼쪽 (: Java 힙 공간 단계 던지고 예외 java.lang.OutOfMemoryError와 같은) 조작 가입

    df_output = df1.join (DF2, [ "필드 1", "2 필드", "FIELD3"], "left_outer"). select ("*")

  4. 추가 모드로 df_output을 사용하여 몽고 컬렉션을 업데이트합니다./spark-env.sh의 conf에

구성 :

  • SPARK_EXECUTOR_INSTANCES = 10
  • SPARK_EXECUTOR_CORES = 3
  • SPARK_EXECUTOR_MEMORY = 5기가바이트
  • SPARK_WORKER_CORES = 30
  • SPARK_WORKER_MEMORY = 50기가바이트

거기에 더 많은 매개 변수가 기본값으로 설정되어 있습니다.

명령으로 마스터 및 1 명의 작업자 설정. 명령

  • sbin/start-master.sh
  • /sbin/start-slave.sh master_ip

스크립트 실행이 데이터 집합에 대한 최적의 성능을 위해 조정 구성 매개 변수에 대한 최선의 방법이 될 더한해야합니까

nohup bin/spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:2.0.0 --master master_ip ../test_scripts/test1.py > /logs/logs.out &

우리는 어떻게해야 모든 데이터 세트에 대해 위의 매개 변수를 구성 하시겠습니까?

답변

0

메모리 문제가 발생하면 고려해야 할 사항이 없습니다. 따라서 아래 매개 변수를 적절히 설정해야합니다.

spark.executor.memory = yarn.nodemanager.resource.memory - 메가 * (spark.executor.cores/yarn.nodemanager.resource.cpu-vcores)

spark.yarn.executor.memoryOverhead = 15 spark.executor.memory의 -20 %

spark.sql.shuffle.output.partitions 매개 변수를 2000 (기본값 200) 이상으로 늘리십시오. 희망이 도움이

관련 문제