전체 그래프
Spark

Introduction

data-engineeringsparkdistributed-computingbig-data

상위: Spark

요약

Apache Spark는 대규모 데이터를 빠르게 처리하기 위한 오픈소스 클러스터 컴퓨팅 프레임워크입니다. In-Memory 연산으로 기존 Hadoop MapReduce보다 빠른 성능을 제공하며, 배치 처리와 실시간 처리를 모두 지원합니다.

기존 데이터 처리 방식의 한계점

1. 단일 서버의 확장성 부족

  • 기존 데이터 처리는 주로 단일 서버(Scale-Up) 기반
  • 데이터가 증가하면 서버 성능을 높이는 방식은 물리적 한계 존재
  • 무한정 성능 향상 불가

Introduction

2. 실시간 분석 어려움

  • 배치 처리 (Batch Processing): 일정 시간마다 데이터를 모아서 처리

Introduction

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

Introduction

  • 기존 시스템은 스트림 처리에 어려움

3. 디스크 기반 처리로 인한 속도 문제

  • 디스크는 RAM보다 읽기/쓰기 속도가 현저히 느림
  • 데이터 처리 속도 저하 발생

Apache Spark

  • 오픈소스 클러스터 컴퓨팅 프레임워크

  • 대규모 데이터빠르게 처리하기 위해 설계됨

  • 배치 처리, 실시간 처리 모두 지원

    → Spark 생태계가 크기 때문에 둘 다 필요할 시 Spark로 통일해서 사용

  • In-Memory 연산으로 디스크보다 빠른 성능 제공

  • 다양한 언어 지원: Java, Scala, Python, R

Spark vs Flink

항목Spark StreamingApache 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의 주요 컴포넌트

Introduction

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

→ 모든 컴포넌트는 Spark Core 위에서 실행됨.

Spark의 탄생 배경

Introduction

  • 기존 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 기반 실행 계획으로 장애 복원 가능