1. spark application on yarn
1) cpu 옵션
--executor-cores (spark.executor.cores)
2) 메모리 옵션
--executor-memory (spark.executor.memory)
3) executor 수
--num-executors (spark.executor.instances)
2. spark memory 사용
spark.yarn.executor.memoryOverhead => max(384, .07 * spark.executor.memroy)
applicationmaster가 yarn에게 해당 container를 요청
1) client mode
1 core and 1GB
2) cluster mode (applicationmaster -> driver call)
--driver-memroy
--driver-cores
single executor 기준 : 최대 64GB 사용 가능
3) example
nodemanager : 6개 (cpu : 16 cores, memory : 64GB)
yarn.nodemanager.resource.memory-mb : 63 * 1024
yarn.nodemanager.resource.cpu-vcores : 15
(os 자원 사용을 위해 전체 할당은 금지)
설정 : --num-executors 6 --executor-cores 15 --executor-memory 63G
==> application master가 1core를 사용함으로 불가, 메모리도 memoryoverhead가
필요함으로 63G 설정불가
변경 : --num-executors 17 --executor-cores 5 --executor-memroy 19G
==> executor 수 : 17/6(서버) = 3, 63/3 = 21.21 - (21.21 * 0.07) = 19G
3. partitions 수 튜닝 (shuffing 최소화)