25분
Spark 아키텍처: Driver와 Executor
Day 1: pandas로 10GB 처리하다 포기했다
Spark 아키텍처: Driver와 Executor
Apache Spark: 대용량 데이터 처리의 시작 > Day 1: pandas로 10GB 처리하다 포기했다
학습 목표
Driver와 Executor의 역할을 구분할 수 있다 Spark 실행 흐름을 설명할 수 있다
Spark 클러스터 구조
회사에 비유해보자.
에디터 로딩 중...
각 컴포넌트의 역할
Driver (사장님)
- 내 Python 코드가 실행되는 곳
- 작업 계획 (DAG) 수립
- Executor들에게 일 분배
- 최종 결과 수집
Executor (직원)
- 실제 데이터 처리하는 곳
- 데이터를 메모리에 캐싱
- Task 단위로 작업 수행
- 결과를 Driver에 보고
Task (할 일)
- 가장 작은 실행 단위
- 하나의 파티션 = 하나의 Task
실행 흐름 예시
에디터 로딩 중...
Spark 내부에서 일어나는 일:
에디터 로딩 중...
Transformation vs Action
Spark에는 두 종류의 연산이 있다.
Transformation (변환) - 지연 실행
에디터 로딩 중...
Action (실행) - 즉시 실행
에디터 로딩 중...
Action을 호출해야 비로소 모든 Transformation이 실행된다.
왜 Lazy Evaluation인가?
에디터 로딩 중...
pandas라면:
- 100개 컬럼 전부 메모리에 로드
- 2개 컬럼만 남기고 나머지 버림
- 조건에 안 맞는 행 버림
Spark라면:
- "어차피 2개 컬럼만 쓰네" → 처음부터 2개만 읽음
- "필터 조건도 있네" → 읽으면서 바로 필터링
결과: 같은 코드인데 Spark가 훨씬 효율적.