상위: Spark
요약
Apache Spark는 대규모 데이터를 빠르게 처리하기 위한 오픈소스 클러스터 컴퓨팅 프레임워크입니다. In-Memory 연산으로 기존 Hadoop MapReduce보다 빠른 성능을 제공하며, 배치 처리와 실시간 처리를 모두 지원합니다.
기존 데이터 처리 방식의 한계점
1. 단일 서버의 확장성 부족
- 기존 데이터 처리는 주로 단일 서버(Scale-Up) 기반
- 데이터가 증가하면 서버 성능을 높이는 방식은 물리적 한계 존재
- 무한정 성능 향상 불가

2. 실시간 분석 어려움
- 배치 처리 (Batch Processing): 일정 시간마다 데이터를 모아서 처리

- 스트림 처리 (Stream Processing): 실시간 이벤트를 지속적으로 처리

- 기존 시스템은 스트림 처리에 어려움
3. 디스크 기반 처리로 인한 속도 문제
- 디스크는 RAM보다 읽기/쓰기 속도가 현저히 느림
- 데이터 처리 속도 저하 발생
Apache Spark
-
오픈소스 클러스터 컴퓨팅 프레임워크
-
대규모 데이터를 빠르게 처리하기 위해 설계됨
-
배치 처리, 실시간 처리 모두 지원
→ Spark 생태계가 크기 때문에 둘 다 필요할 시 Spark로 통일해서 사용
-
In-Memory 연산으로 디스크보다 빠른 성능 제공
-
다양한 언어 지원: Java, Scala, Python, R
Spark vs Flink
| 항목 | Spark Streaming | Apache Flink |
|---|---|---|
| 💡 처리 방식 | 마이크로 배치 (Micro-batch) | 진짜 실시간 (True streaming / record-by-record) |
| 🧱 처리 단위 | 일정 시간 단위로 묶음 (RDD 단위) | 한 건(레코드) 단위로 바로 처리 |
| 🕒 지연 시간 | 수 초 ~ 수 밀리초 (batch interval에 따라) | 몇 밀리초 수준 (진짜 Low Latency) |
| 💥 지연 민감도 | 지연 OK한 처리에 적합 (로그, ETL 등) | 실시간 반응이 중요한 작업에 적합 (실시간 모니터링, fraud detection 등) |
| 💽 상태 관리 | RDD 기반, 상태 처리 불편함 | Keyed State, Window State 등 상태 기반 연산이 강력 |
| 💾 체크포인트 | 있음 (Checkpoint, WAL 기반) | Exactly-Once 지원, Checkpoint, Savepoint, Backpressure 조절 기능 우수 |
| 🧪 트리거 기반 | 트리거 주기마다 처리 | 이벤트가 들어오는 즉시 반응 |
| 🧠 복잡한 처리 | ML 파이프라인, 대규모 집계에 유리 | 스트림 조인, 이벤트 타임 처리에 강함 |
| ✅ 적합한 예시 | 데이터 웨어하우스 적재, 로그 수집, 마이크로 배치 ETL | 실시간 알림, 온라인 금융 이상 탐지, IoT 스트리밍 |
Spark의 특징
- 높은 처리 성능: 메모리 기반 처리
- Lazy Evaluation: 지연 평가로 연산 최적화
- 다양한 처리 방식 지원: 배치 + 스트리밍
- 다양한 언어 지원
Spark 활용 시 주의점
- 정밀한 실시간 처리 불가: 마이크로 배치 기반
- 작은 파일 처리 비효율
- 파일 시스템 필요: HDFS, S3 권장
- 높은 메모리 비용
Spark의 주요 컴포넌트

| 컴포넌트 | 설명 |
|---|---|
| Spark Core | 핵심 실행 플랫폼. 모든 컴포넌트의 기반 |
| Spark SQL | 구조적 데이터 처리 및 SQL 기반 쿼리 실행 |
| Spark Streaming | 실시간 스트리밍 데이터 처리 (마이크로 배치 방식) |
| MLlib | 머신러닝 라이브러리 (분류, 회귀, 군집 등) |
| GraphX | 그래프 데이터 분석 및 처리 (PageRank 등) |
→ 모든 컴포넌트는 Spark Core 위에서 실행됨.
Spark의 탄생 배경

- 기존 Hadoop MapReduce는 느린 속도 + 반복 작업의 비효율성이 문제.
- 특히 머신러닝이나 스트리밍 분석처럼 반복적·실시간 작업에는 부적합.
- 이를 해결하기 위해 UC Berkeley AMP Lab에서 개발.
- 2009년 Matei Zaharia가 Spark 개발 시작 → 2010년 오픈소스 공개 → 2014년 Apache 프로젝트로 채택.
기존 기술 한계와 Spark의 해결책
| 기존 기술 | 문제점 | Spark의 해결 방식 |
|---|---|---|
| Hadoop | 느린 처리 속도, 반복 작업 비효율 | In-Memory 연산 |
| RDBMS | 확장성 부족, 비정형 데이터 처리 어려움 | 분산 클러스터 기반 + 유연한 스키마 |
| 특화 시스템들 | 기능 분산, 통합 어려움 | 하나의 플랫폼에서 배치+스트림+ML 통합 |
| 디스크 기반 처리 | 입출력 병목 | DAG 기반 Lazy 평가 및 실행 최적화 |
→ 기존 시스템 단점들을 흡수해 빠르고 통합적인 분석 환경 제공
Spark 사용 이유
- 반복 연산에서 Hadoop 대비 뛰어난 성능
- In-Memory 기반 빠른 처리
- Hadoop과의 연동 용이
- DAG 기반 실행 계획으로 장애 복원 가능