spark
1. Spark란?
Apache Spark는
대용량 데이터를 빠르게 처리하기 위한 분산 데이터 처리 엔진이다.
💡 한 줄 요약
Spark = 메모리 기반 초고속 분산 처리 시스템
2. 왜 Spark가 등장했을까?
기존의 Apache Hadoop (MapReduce)는:
- 디스크 기반 처리
- 속도가 느림
- 반복 연산에 비효율적
⇒ 이를 개선하기 위해 등장한 것이
Apache Spark
Spark는 데이터를 메모리에 올려서 처리하기 때문에 훨씬 빠르다.
3. Spark의 핵심 특징
1. 메모리 기반 처리 (In-Memory)
디스크가 아니라 RAM에서 처리 → 매우 빠름
2. 분산 처리
여러 서버(노드)가 동시에 작업 수행
3. 다양한 데이터 처리 지원
- 배치 처리
- 실시간 스트리밍
- 머신러닝
- 그래프 분석
- SQL 분석
4. Spark 구조
Driver Program
↓
Cluster Manager
↓
Worker Nodes
↓
Executor (Task 수행)
🔹 Driver
- 전체 작업 제어
- DAG 생성
🔹 Executor
- 실제 데이터 처리 수행
5. Spark의 핵심 개념
① RDD (Resilient Distributed Dataset)
Spark의 기본 데이터 구조
- 불변(immutable)
- 분산 저장
- 병렬 처리 가능
② DataFrame
- 테이블 구조
- SQL처럼 사용 가능
- RDD보다 사용하기 편함
③ DAG (Directed Acyclic Graph)
- 작업 흐름을 그래프로 구성
- 최적화된 실행 계획 생성
6. Spark vs Hadoop 차이
| 구분 | Hadoop | Spark |
|---|---|---|
| 처리 방식 | 디스크 기반 | 메모리 기반 |
| 속도 | 느림 | 빠름 |
| 반복 연산 | 비효율적 | 효율적 |
| 실시간 처리 | 어려움 | 가능 |
7. Spark 주요 모듈
- Spark Core → 기본 엔진
- Spark SQL → SQL 쿼리 처리
- Spark Streaming → 실시간 데이터 처리
- MLlib → 머신러닝
- GraphX → 그래프 분석
8. 빅데이터 분산 프로젝트에서 Spark는?
예를 들어:
🏠 부동산 실거래가 분석
- 수백만 건 데이터 집계
- 지역별 평균가 계산
- 위험도 점수 산출
📊 실시간 모니터링
- Kafka로 수집
- Spark Streaming으로 분석
- 대시보드에 반영
9. 한 줄 정리
Spark는 메모리 기반으로 대용량 데이터를 빠르게 처리하는 분산 데이터 엔진이다.
실제 조합은 어떻게 쓰일까?
🔹 Spark 단독 사용
- 클라우드 S3 저장
- 자체 클러스터 사용
- Kubernetes 위에서 실행
👉 요즘은 이 방식도 많음
🔹 Hadoop + Spark 같이 사용
HDFS (저장)
↓
Spark (처리)
이 조합이 전통적인 빅데이터 구조
역할 분리
| 역할 | 담당 |
|---|---|
| 저장 | HDFS |
| 계산 | Spark |
| 자원관리 | YARN |
그럼 꼭 같이 써야 하나?
Spark는:
- HDFS
- S3
- MySQL
- Kafka
- 로컬 파일
다 읽을 수 있다.
즉,
Spark는 저장소에 종속되지 않는다.