핵심 인사이트 (3줄 요약)
- 본질: Spark 실행 구조는 Driver, Cluster Manager, Executor가 역할을 나눠 분산 작업을 수행하는 구조다.
- 가치: Job → Stage → Task 흐름을 이해하면 Spark 성능 문제와 자원 할당 문제를 설명하기 쉬워진다.
- 판단: Spark는 계산 로직뿐 아니라 실행 계획, Shuffle, 실패 복구까지 함께 봐야 한다.
Ⅰ. 개요 및 필요성
Spark는 큰 데이터를 빠르게 처리하기 위해 분산 실행 구조를 사용한다. 단일 프로세스가 아니라 여러 Executor에 작업을 나눠 보내기 때문에, 실행 구조를 이해해야 병목을 찾을 수 있다.
Driver가 계획을 세우고, Cluster Manager가 자원을 배분하고, Executor가 실제 계산을 수행한다.
- 📢 섹션 요약 비유: 감독이 계획을 짜고, 현장이 자원을 받고, 작업자들이 실제로 일하는 공사 현장이다.
Ⅱ. 아키텍처 및 핵심 원리
Driver
↓
DAG Scheduler
↓
Task Scheduler
↓
Cluster Manager
↓
Executors
| 구성 요소 | 역할 |
|---|---|
| Driver | 애플리케이션 제어와 작업 계획 |
| Cluster Manager | 자원 할당 |
| Executor | Task 실행 |
| DAG Scheduler | Stage 단위 분할 |
| Shuffle | 데이터 재분배 |
Spark의 기본 단위는 Job, Stage, Task다. Job은 사용자가 요청한 작업 전체이고, Stage는 Shuffle 경계로 나뉜 부분, Task는 각 Executor에서 실행되는 세부 작업이다.
- 📢 섹션 요약 비유: 큰 일(Job)을 공정(Stage)으로 나누고, 공정 안의 작은 작업(Task)을 여러 작업자가 처리하는 셈이다.
Ⅲ. 비교 및 연결
| 구분 | Driver | Cluster Manager | Executor |
|---|---|---|---|
| 역할 | 제어/계획 | 자원 배분 | 계산 수행 |
| 위치 | 애플리케이션 측 | 클러스터 측 | 워커 노드 |
| 병목 | 계획 과부하 | 자원 부족 | 메모리/Shuffle |
| 개념 | 의미 |
|---|---|
| Job | 사용자가 제출한 논리 작업 |
| Stage | Shuffle 경계로 나뉜 실행 단위 |
| Task | Executor에 배분되는 최소 단위 |
Spark 구조를 이해하면 왜 Shuffle이 비싼지, 왜 Driver 장애가 치명적인지, 왜 Executor 메모리 튜닝이 중요한지 설명할 수 있다.
- 📢 섹션 요약 비유: 설계도, 자재 창고, 작업반이 서로 다른 역할을 맡아야 건물이 완성된다.
Ⅳ. 실무 적용 및 기술사 판단
체크리스트
- Driver와 Executor 역할을 구분하는가?
- Job/Stage/Task의 차이를 설명할 수 있는가?
- Shuffle 비용과 데이터 스큐를 고려하는가?
- Cluster Manager 종류(YARN, K8s, Standalone)를 이해하는가?
- 메모리와 병렬도 설정이 작업 특성과 맞는가?
안티패턴
- Driver에 과도한 계산을 몰아넣는 설계
- Shuffle 비용을 무시하고 조인만 남발하는 설계
- Executor 수만 늘리고 데이터 분배를 안 보는 설계
- 장애 복구와 재시도를 고려하지 않는 설계
기술사 관점에서는 Spark를 "라이브러리"가 아니라 "분산 실행 시스템"으로 봐야 한다. 실행 구조가 성능과 안정성의 핵심이다.
- 📢 섹션 요약 비유: 지휘자만 잘해도 안 되고, 악단과 무대 배치가 함께 맞아야 공연이 잘 된다.
Ⅴ. 기대효과 및 결론
Spark 실행 구조를 이해하면 분산 처리의 병목과 장애 지점을 쉽게 찾을 수 있다. 결국 성능 튜닝은 구조를 읽는 데서 시작한다.
결론적으로 Driver는 계획, Cluster Manager는 자원, Executor는 계산을 맡는다.
- 📢 섹션 요약 비유: 감독, 배급 담당, 작업자가 각자 맡은 일을 해야 전체가 빨라진다.
관련 개념 맵
Driver
↓
Job / Stage / Task
↓
Cluster Manager
↓
Executors
관련 키워드 및 발전 흐름도
Spark Job
↓
DAG Scheduling
↓
Executor Execution
↓
Shuffle / Recovery
어린이를 위한 3줄 비유 설명
일을 크게 나누면 더 빨리 끝낼 수 있어요.
누군가는 계획을 세우고, 누군가는 자원을 나누고, 누군가는 실제로 일해요.
Spark는 그런 식으로 많은 데이터를 처리해요.