[spark] 설정 튜닝

somnode·2021년 2월 2일
0

Spark job 설정 시 driver와 executor에 대한 설정 튜닝에 따라 성능이 달라진다.

Spark 동작 원리

  • Spark는 하나의 driver와 여러 개의 worker 노드로 구성되어 동작한다.

driver에 대한 설정

  • --driver-memory : driver는 전체 노드에서 한 개가 뜨며, driver가 사용하는 메모리 용량이다.

executor에 대한 설정

  • executor마다 컨테이너로 감싸져 있다.
  • --num-executors : 전체 노드에서 뜰 수 있는 executor 수의 최대값이다.
  • --executor-memory : executor 하나가 사용하는 메모리 용량이다.
  • --executor-cores : executor 하나가 사용하는 코어 개수이다.

성능 튜닝

  • Spark는 인메모리 분산 처리 엔진이기 때문에 cores 수가 많은 것보다 memory 용량이 많은 게 더 좋다.
  • 예를 들어, 3개의 데이터 노드가 있고, 노드 당 코어 수가 64개, 메모리 용량이 1024GB 라고 치자. (여기서 코어 수와 메모리 용량은 Available을 기준으로 한다.)
    • 각 노드에서 최대로 뜰 수 있는 executor 개수는 A=64/(executor-cores)개이다.
    • 노드마다 사용하는 메모리 용량은 A*(executor-memory)이다.
    • 따라서 num-executors는 A*3으로 설정해야 자원을 최대로 활용한다.

0개의 댓글