BigData/Spark & Spark Tuning

[Spark] Spark 자주 쓰이는 Config 정리 driver,executor memory, dynamic allocation

스파이디웹 2021. 12. 28. 16:21
728x90

 

properties 분류 설명 예시
spark.master Application Properties 클러스터 매니저(리소스 매니저 설정) local[*], yarn, k8s://HOST:PORT,
mesos: //HOST:PORT
spark.driver.extraClassPath Runtime Environment 드라이버의 클래스 경로에 추가할 추가 클래스 경로 항목 /usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*$spark.driver.extraLibraryPath    /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/n$spark.executor.extraClassPath    /usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*$spark.executor.extraLibraryPath  /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/n$spark.eventLog.enabled           true
spark.eventLog.dir Spark UI Spark Events 로그가 저장되어 있는 기본 디렉토리, 각 애플리케이션마다 sub-directory를 만든다. file:///tmp/spark-events,
hdfs:///var/log/spark/apps
spark.sql.warehouse.dir Static SQL Configuration managed DB와 table의 기본 경로 (value of $PWD/spark-warehouse),
hdfs:///user/spark/warehouse
spark.yarn.appMasterEnv   YARN Clutser mode로 실행할 시 환경 변수를 설정해줌 spark.yarn.appMasterEnv.PYSPARK_PYTHON=/bin/python3
spark.executor.memory  Application Properties executor process 메모리 양 설정 500m, 10g
spark.driver.memory  Application Properties driver process 메모리 양 설정 500m, 10g
spark.executor.cores Application Properties executor process 코어 수 설정 1~5
spark.driver.cores Application Properties cluster모드에서만 사용되는 driver process의 코어 수 설정 1~5
spark.executor.memoryOverhead Application Properties VM overheads와 같은 것에 사용될 메모리 양, yarn하고 kubernetes에서만 지원된다. executorMemory * 0.10 (384m 최소값)
spark.executor.defaultJavaOptions Runtime Environment 기본 jvm 옵션, GC설정이나 logging관련 설정 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:OnOutOfMemoryError='kill -9 %p' -XX:+UseParallelGC -XX:InitiatingHeapOccupancyPercent=70
spark.driver.defaultJavaOptions Runtime Environment 기본 jvm 옵션, GC설정이나 logging관련 설정 -XX:OnOutOfMemoryError='kill -9 %p' -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:MaxHeapFreeRatio=70 -XX:+CMSClassUnloadingEnabled
spark.dynamicAllocation.enabled Dynamic Allocation Dynamic Allocation을 사용할지에 대한 옵션(executor scale up down 조절) false,true (true이면 dynamic allocation을 사용하겠다는 의미)
spark.dynamicAllocation.shuffleTracking.enabled Dynamic Allocation executor에 대한 shuffle file tracking을 활성화하여 외부 shuffle service 없이도 동적 할당을 허용. 이 옵션은 active 작업의 shuffle data를  저장하는 executor를 활성 상태로 유지 false,true (true 일시 shuflle tracking service 가능)
spark.dynamicAllocation.initialExecutors Dynamic Allocation application이 시작될 때 executor 수 3
spark.dynamicAllocation.maxExecutors Dynamic Allocation 최소한의 executor 수 3
spark.dynamicAllocation.minExecutors Dynamic Allocation 최대한의 executor 수 5
spark.shuffle.service.enabled
Shuffle Behavior 외부의 shuffle service를 가능하게 하는 옵션,executor로 부터 쓰여진  shuffle file를 보존해줌, 따라서 executor가 안전하게 제거될 수 있음. false,true (true일 시 외부 shuffle service 사용 가능)

 

dynamic allocation을 사용하려면 2가지 경우가 있습니다.

  1. spark.dynamicAllocation.enabled = true + spark.dynamicAllocation.shuffleTracking.enabled = true
  2. spark.dynamicAllocation.enabled = true + spark.shuffle.service.enabled

 

참조:

https://spark.apache.org/docs/latest/configuration.html

 

 

*완벽하지 않은 글이라 수정해 나가겠습니다.

728x90