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가지 경우가 있습니다.
- spark.dynamicAllocation.enabled = true + spark.dynamicAllocation.shuffleTracking.enabled = true
- spark.dynamicAllocation.enabled = true + spark.shuffle.service.enabled
참조:
https://spark.apache.org/docs/latest/configuration.html
*완벽하지 않은 글이라 수정해 나가겠습니다.
728x90