25

Spark 아키텍처: Driver와 Executor

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라면:

  1. 100개 컬럼 전부 메모리에 로드
  2. 2개 컬럼만 남기고 나머지 버림
  3. 조건에 안 맞는 행 버림

Spark라면:

  1. "어차피 2개 컬럼만 쓰네" → 처음부터 2개만 읽음
  2. "필터 조건도 있네" → 읽으면서 바로 필터링

결과: 같은 코드인데 Spark가 훨씬 효율적.