spark-shell 이나 spark-submit 으로 spark app을 실행시킬 때 자원에 제한을 두는 방법이다.
아래처럼 옵션을 줄 수 있다.
--executor-cores : 각 executor 당 core 개수
--executor-memory : 각 executor 당 memory 용량
--num-executors : 한 노드의 executor 개수
예)
spark-shell --master yarn \
--num-executors 12 --executor-memory 4g --executor-cores 2 \
--conf spark.default.parallelism=12 \
--conf spark.sql.shuffle.partitions=12
위의 예에서는 spark app 은
총 12개의 executor 를 사용하고
각 executor 당 4g의 메모리를 사용하며
각 executor 당 2개의 코어를 사용한다(2개 thread 만큼 병렬 실행이 가능)
추가적으로,
spark.default.parallelism 는 RDD의 파티션 개수
spark.sql.shuffle.partitions 는 셔플할 때 나눠지는 파티션 개수
를 의미한다.
'Spark' 카테고리의 다른 글
[Spark] Required executor memory (2048), overhead (384 MB), and PySpark memory (0 MB) is above the max threshold (2048 MB) of this cluster! 에러 원인 파악 및 해결 (0) | 2019.11.08 |
---|---|
[Spark] mongo-spark connector 로 aggregation 쿼리 보내는 예제 코드 (0) | 2019.11.06 |
[Spark] Master option 설명 (0) | 2019.11.02 |
[Spark] WebUI 의 duration 과 task time 이 왜 다른가? (0) | 2019.11.01 |
[Spark] Log Level 바꾸는 법 (1) | 2019.10.22 |