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 최소화)



+ Recent posts