아파치 스파크란?
- 빅데이터 위에서 쉽게, 유연하게 프로세싱 할 수 있는 툴 = 라이브러리
- 데이터 전처리를 하고 수집해서 데이터 엔지니어나 머신너링 엔지니어들이 쓰게 끔 함.
왜 아파치 스파크를 쓰는가?
- High Performance
- 기존 하둡 랩리듀스는 디스크베이스로 디스크 위에서 정리를 하고 네트워크를 통해 데이터를 셔플링
- 하둡보다 더 빠름 → 모든 데이터를 메모리 위에 올린 후 메모리에서 계산을 하고 데이터 셔플링을 할 때 네트워크 사용
- Unified Platform for Big Data
- 배치 프로세싱 - 시간 정해놓고 데이터 처리
- 스트림 프로세싱 - 시냇물처럼 들어오는 움직이는(?) 데이터를 처리
- SQL querying - 데이터 프레임 위에 sql을 가지고 query
- ML
- 그래프 분석
- 이 보든 걸 결합하는 싱글 시스템
→ 전체적인 걸 다 가지고 있기 때문에 다른 툴이 필요 없음
- Scalability
- 클러스터(여러개의 노드를 모아놓은 것)
- 비슷한 스펙을 가진 하드웨어를 수평적으로 확장하고 네트워크를 통해 교환
- 대용량 데이터까지 처리 가능.
- 아파치 하둡 YARN, 아파치 메소스, 쿠버네티스 같은 클러스터 매니저와 같이 작동
- Flexibility
- 파이썬, 자바, 스칼라, SQL, R 을 이용해서 쿼리 날릴 수 있음
- 모든 데이터(대부분 데이터는 비정형)를 데이터 포맷을 이용해 정형/반정형 데이터로 구조화
- Real-Time Data Processing
- 스파크 스트리밍이라는 라이브러리를 통해 실시간 스트림(real-time data streams) 처리 가능
- 배치 프로세싱과 스트림 프로세싱을 같은 코드를 이용해 다룰 수 있음

- 클러스터에는 마스터 노드와 워커노드로 구성되어있음.
- 마스터 노드는 1~2개, 워커 노드는 여러개
- 마스터 노드는 Driver Program이 Spark Context를 가지고 있음
- 클러스터 매니저가 메시지를 받으면 명령을 가지고 Worker Node안에 있는 Executor에다가 Task 시킴
- Task를 시켜서 처리 후 다시 Driver Program에 리턴
- Task가 프로세싱하다가 Cache할게 있으면 저장하다가 필요하다가 다시 사용
- 많은 워커 노드들이 서로 셔플링하며 데이터 처리하며 분산 시스템을 만듦
왜 파이썬을 쓰는가?
- Ease of Learning and Use
- Rich Ecosystem
- 많은 라이브러리로 편하게 사용 가능(numpy, pandas, scikit-learn etc)
- Popular Combination
'IT 정리 > 아파치 스파크' 카테고리의 다른 글
| Spark 기초(1) (0) | 2026.05.01 |
|---|---|
| Spark 환경 설정 (0) | 2026.04.30 |
| Apache Spark 설치(window), jupyter 접속 (0) | 2026.04.30 |
| RDD, Docker 소개 (0) | 2026.04.30 |
| 클러스터&스파크 아키텍쳐 소개 (0) | 2026.04.30 |