20분
Spark의 비밀: 분산 처리
Day 1: pandas로 10GB 처리하다 포기했다
Spark의 비밀: 분산 처리
Apache Spark: 대용량 데이터 처리의 시작 > Day 1: pandas로 10GB 처리하다 포기했다
학습 목표
분산 처리의 개념을 이해한다 Spark의 핵심 철학을 파악한다
pandas vs Spark: 근본적인 차이
pandas (단일 머신):
에디터 로딩 중...
Spark (분산 처리):
에디터 로딩 중...
핵심 아이디어: 혼자 못하면 여럿이 나눠서 하자.
Spark의 3가지 핵심 원칙
1. 데이터를 나눈다 (Partitioning)
에디터 로딩 중...
각 파티션은 독립적으로 처리된다. 5개 서버가 있으면 5개가 동시에 작업. 10GB가 2GB씩 5번이 되는 것.
2. 메모리에서 처리한다 (In-Memory)
Hadoop MapReduce (Spark 이전 세대):
에디터 로딩 중...
Spark:
에디터 로딩 중...
디스크 I/O를 최소화해서 100배 빠르다.
3. 필요할 때만 실행한다 (Lazy Evaluation)
에디터 로딩 중...
왜 이렇게 할까? → 전체 계획을 보고 최적화할 수 있다. → 불필요한 작업을 생략할 수 있다.
예: 100개 컬럼 중 2개만 쓴다면? → 처음부터 2개 컬럼만 읽는다.
Spark vs pandas 속도 비교
| 데이터 크기 | pandas | Spark (4코어) | Spark (20코어) |
|---|---|---|---|
| 1GB | 2분 | 1분 | 30초 |
| 10GB | MemoryError | 8분 | 2분 |
| 100GB | 불가능 | 80분 | 15분 |
| 1TB | 불가능 | 가능 | 150분 |
코어를 늘리면 속도가 비례해서 빨라진다. 이게 분산 처리의 힘이다.