본문 바로가기

IT/Spark

Apache Spark Executor 정리

반응형

Spark Executor는 Apache Spark에서 작업(Task)을 실제로 실행하는 프로세스로, 클러스터의 각 노드에서 실행됩니다.
Spark 애플리케이션이 실행될 때, Executor는 드라이버(Driver)로부터 명령을 받고 RDD(Resilient Distributed Dataset) 변환 및 액션을 수행합니다.


Executor의 역할


1. Task 실행
  • Spark Driver가 분배한 Task(작업 단위)를 실행
  • Task는 RDD 연산, 데이터 로드 및 변환을 수행

2. 메모리 관리
  • Executor는 캐시된 RDD 및 데이터 처리를 위한 메모리를 관리
  • Spark의 JVM Heap Memory를 활용하여 연산 수행

3. 데이터 저장 및 교환
  • 데이터가 파티션 단위로 Executor에 저장되며, 필요 시 다른 Executor와 데이터 교환

4. 결과 반환
  • 각 Task가 수행된 후 결과를 Spark Driver에 반환



Executor 실행 과정

1. Spark 애플리케이션 시작
2. Cluster Manager(YARN, Kubernetes, Mesos 등)가 Executor 할당
3. Driver가 Task를 Executor로 전송
4. Executor가 Task 실행 및 데이터 저장/교환
5. 작업 완료 후 결과 반환 또는 저장



Executor의 구성 요소

• Task Slot: Executor에서 병렬로 실행할 수 있는 작업 수
• JVM Heap Memory:
• Execution Memory: 연산 중 필요한 메모리 (Shuffle, Join, Aggregation 등)
• Storage Memory: 캐싱된 데이터 저장
• Shuffle Service: Executor 간 데이터 교환 시 사용


Executor 설정

• Spark에서는 Executor의 개수, 메모리 크기 등을 설정하여 최적화할 수 있습니다

설정설명예시
--num-executorsExecutor 개수 지정--num-executors 10
--executor-cores Executor 당 CPU 코어 수 --executor-cores 4
--executor-memoryExecutor의 JVM 메모리 크기--executor-memory 8G

Executor와 Driver의 차이

구분Driver Executor
역할작업을 분배하고 관리 작업(Task)을 실행
위치클러스터의 Master 노드 또는 Client 클러스터의 Worker 노드
실행 시간 애플리케이션이 끝날 때까지 유지 작업이 끝나면 종료될 수 있음

Executor 장애 처리

• Executor가 비정상 종료되면 Spark는 새로운 Executor를 요청하여 작업을 다시 할당
• spark.task.maxFailures 값을 조정하여 재시도 횟수 설정 가능

반응형