Comparison of Apache Flink and Apache Spark

Apache Flink와 Apache Spark는 대규모 분산 데이터 처리를 위해 설계된 대표적인 오픈 소스 프레임워크다. 두 시스템 모두 배치(Batch) 처리와 스트림(Stream) 처리를 지원하지만, 데이터를 다루는 근본적인 아키텍처와 최적화된 사용 사례에서 명확한 차이를 보인다.

주요 특징

  • Apache Flink: 데이터 스트림을 기본 단위로 간주하는 네이티브 스트리밍(Native Streaming) 엔진이다. 데이터가 유입되는 즉시 개별 이벤트 단위로 처리하므로 지연 시간(Latency)이 매우 짧다. 배치 처리는 단순히 ‘시작과 끝이 있는 유한한 스트림’으로 취급하여 처리한다. 상태 관리(State Management)와 정확히 한 번(Exactly-once) 처리 보장에 매우 강력한 기능을 제공한다.
  • Apache Spark: 데이터를 메모리 상의 파티션으로 나누어 다루는 배치 기반(Batch-based) 통합 분석 엔진이다. 스트리밍 데이터의 경우 데이터를 짧은 시간 주기로 잘라 작은 배치 형태로 처리하는 마이크로 배치(Micro-batching) 방식을 사용한다(Structured Streaming). 지연 시간은 Flink보다 상대적으로 길지만, 방대한 생태계(MLlib, Spark SQL 등)와 안정적인 대용량 배치 처리 성능을 자랑한다.

데이터 처리 프레임워크 비교

Apache Flink와 Apache Spark의 구조적 및 기능적 차이는 다음과 같다.

특징Apache FlinkApache Spark
핵심 아키텍처네이티브 스트리밍 (Event-at-a-time)마이크로 배치 (Micro-batching)
처리 모델의 기반스트리밍을 기본으로 하며, 배치를 특수한 스트림으로 간주배치를 기본으로 하며, 스트림을 연속된 작은 배치로 간주
지연 시간 (Latency)매우 낮음 (밀리초 단위 이하 처리에 적합)낮음 (수백 밀리초 ~ 수 초 단위, Flink 대비 높음)
상태 관리 (State Management)일급 객체(First-class citizen)로 취급, RocksDB 등 내장 지원지원되나 Flink에 비해 세밀한 제어 및 확장성이 제한적
윈도우 연산 (Windowing)매우 정교함 (Time, Count, Session, Custom Window 등 지원)기본적인 Time 기반 윈도우 위주
생태계 및 커뮤니티스트리밍 처리에 특화, 상대적으로 커뮤니티 규모가 작음빅데이터 표준으로 자리 잡음, 방대한 라이브러리와 커뮤니티
최적 사용 사례이상 탐지(Fraud Detection), 실시간 경고, 복잡한 이벤트 처리(CEP)대용량 ETL, 머신러닝 모델 학습(MLlib), 대화형 데이터 분석

출처

  • Fabian Hueske and Vasiliki Kalavri, Stream Processing with Apache Flink, O’Reilly Media. (Chapter on stream processing architectures).
  • Bill Chambers and Matei Zaharia, Spark: The Definitive Guide: Big Data Processing Made Simple, O’Reilly Media. (Chapters covering Structured Streaming and Spark architecture).
  • Martin Kleppmann, Designing Data-Intensive Applications, O’Reilly Media. (Chapter 11: Stream Processing).

Entities