스파크 spark

[Spark] Spark Executor 란 무엇일까

박경태 2023. 12. 30. 22:33

스파크 익스큐터에 대한 간단한 설명

- 스파크 클러스터의 워커 노드에서 실행되는 프로세스

- 스파크 드라이버에 의해 할당된 작업을 실행하는 역할

 

스파크 익스큐터는 스파크 어플리케이션의 핵심 역할

- 실제로 데이터에 대한 계산을 수행

 

스파크 드라이버가 클러스터에 작업을 제출했을 때

- 작업은 태스크라는 작업 단위로 나눠짐

- 태스크들은 스파크 클러스터 내의 이용 가능한 익스큐터에 실행되도록 예약됨

- 익스큐터는 태스크들을 병렬로 실행하고 결과를 다시 드라이버로 반환

 

익스큐터가 실행될 때

- 특정 양의 메모리와 CPU 리소스가 할당

- 이 메모리를 사용하여 계산 중 빠른 액세스를 위해 데이터를 메모리에 저장

- 익스큐터는 캐시, 디스크에 저장된 데이터를 관리하며, 데이터가 노드 간에 교환되어야 하는 셔플 작업도 처리

 

기본적인 스파크 클러스터

- 각 노드당 하나의 익스큐터를 생성

- 다만, 스파크 어플리케이션에 따라 익스큐터의 수를 조정 가능

- 익스큐터의 수는 스파크 어플리케이션의 성능에 영향을 미칠 수 있음

- 사용 가능한 자원과 데이터 처리 작업의 특성을 고려하여 적절한 수를 선택하는 것이 중요

 

스파크 어플리케이션에 따른 다양한 익스큐터 종류

- Default Executor

- Coarse-Grained Executor

- Fine-Grained Executor

- External Executor

 

스파크 익스큐터의 주요 구성 옵션

Executor Memory : --executor-memory

- 각 익스큐터에 할당된 메모리의 양

Executor Cores : --executor-cores

- 각 익스큐터에 할당된 CPU 코어의 수

Number of Executors : --num-executors

- 익스큐터의 수

Executor Garbage Collection

- Garbage Collection 알고리즘

Overhead Memory : --executor-memory-overhead

- JVM 오버헤드 및 오프-힙 버퍼와 같은 시스템 프로세스를 위해 예약된 메모리 양

Shuffle Memory : --spark.shuffle.memoryFraction

- 셔플 작업에 할당된 메모리 양

 

스파크 익스큐터 성능에 영향을 미칠 수 있는 요인

메모리

- 메모리 부족 상태가 되면 데이터를 디스크로 이동해야 할 수 있고, 이는 처리 속도가 느려질 수 있음

CPU

- 익스큐터가 필요한 코어를 할당받지 못하면 병목 지점이 돼 처리 속도가 느려질 수 있음

네트워크

- 익스큐터는 데이터를 교환하기 위해 서로 통신함

- 느린 네트워크 연결은 데이터 전송 지연으로 처리 속도가 느려질 수 있음

데이터 분포

- 특정 노드가 다른 노드보다 많은 데이터를 처리해야 할 경우 처리 속도가 느려질 수 있음

작업 정밀도

- 작업이 너무 작으면 작업 스케줄링 및 데이터 전송에 관련된 오버헤드가 많아져 처리속도가 느려질 수 있음

- 작업이 너무 크면 완료까지 시간이 오래 걸려 처리속도가 느려질 수 있음

 

스파크 익스큐터의 일반적인 사용 사례

- 데이터 처리

- 머신러닝

- 스트리밍 데이터 처리

- 그래프 처리

- 대화형 분석

- 배치 처리