MapReduce vs Apache Spark


핵심 차이 한 줄 요약

MapReduce는 디스크 기반, Spark는 메모리 기반.


처리 방식 비교

MapReduce

입력 → Map → [디스크 저장] → Shuffle → [디스크 저장] → Reduce → 출력
              ↑ 매 단계마다 HDFS에 중간 결과 쓰고 읽음

Spark

입력 → Map → Shuffle → Reduce → 출력
              ↑ 중간 결과를 메모리(RAM)에 유지
              (필요할 때만 디스크)

중간 결과를 매번 디스크에 쓰느냐, 메모리에 들고 있느냐의 차이가 속도 100배 차이를 만들어.


상세 비교표

항목 MapReduce Apache Spark
처리 위치 디스크 (HDFS) 메모리 (RAM) 우선
속도 느림 최대 100x 빠름
처리 모델 배치만 배치 + 스트리밍 + ML + 그래프
프로그래밍 모델 Map / Reduce 2단계 DAG (유향 비순환 그래프)
지연 실행 없음 있음 (Lazy Evaluation)
언어 지원 Java 중심 Scala, Python, Java, R
반복 처리 매우 비효율 효율적 (ML에 적합)
내결함성 HDFS 복제 RDD 리니지 재계산
학습 난이도 상대적으로 단순 높음
메모리 요구량 낮음 높음

MapReduce가 느린 이유 (조금 더 깊게)

머신러닝에서 흔한 반복 알고리즘을 예로 들면:

# 경사하강법 - 같은 데이터를 100번 반복 처리한다고 가정

MapReduce:
1회차: 읽기(HDFS) → 처리 → 쓰기(HDFS)
2회차: 읽기(HDFS) → 처리 → 쓰기(HDFS)
...
100회차: 읽기(HDFS) → 처리 → 쓰기(HDFS)
→ 디스크 I/O 200번 발생

Spark:
1회차: 읽기(HDFS) → 메모리에 올림
2~100회차: 메모리에서 바로 처리
→ 디스크 I/O 1번

이게 ML 워크로드에서 Spark가 압도적인 이유야.