Spark Streaming 기반 유실 없는 스트림 처리 인프라 구축
Source
Evernote/Inbox/Spark Streaming으로 유실 없는 스트림 처리 인프라 구축하기 README.md
Summary
본 문서는 SK플래닛 Data Infrastructure 팀이 대용량 데이터의 실시간 분산 처리를 위해 Spark Streaming을 선택하여 유실 없는(Exactly-once) 스트림 처리 인프라를 구축한 경험을 공유합니다. 실시간 처리(목표/제약)와 스트림 처리(방식)의 개념을 구분하고, Kafka를 버퍼로 활용하는 전체 아키텍처(LogAgent, RakeAPI/Library, HBase, Security 등)를 소개합니다. Apache Storm, Samza와의 비교를 통해, 팀의 기존 Spark 마이그레이션 추세, YARN 호환성, Exactly-once 보장, 커뮤니티 활성도 등을 고려하여 Spark Streaming을 최종 선택한 근거를 서술합니다.
Key Points
- 실시간 처리는 시간 제약(deadline)이 있는 목표이며, 스트림 처리는 무한한 데이터 흐름을 처리하는 방식이다.
- 인프라 아키텍처는 자체 개발 LogAgent/Rake Library를 통해 Kafka로 로그를 수집하고, Spark Streaming이 마이크로 배치로 처리하며, HBase와 Security 레이어를 연동한다.
- Apache Storm, Samza, Esper 등을 후보로 검토했으나, Spark Streaming을 최종 선택했다.
- 선택 이유는: 1) 기존 MapReduce/Cascading에서 Spark로의 마이그레이션 추세와 부합, 2) YARN 환경 호환성, 3) Exactly-once 처리 보장, 4) 빠른 기술 발전과 커뮤니티 활성화.
- Kafka는 데이터 원천과 처리 사이에서 내구성(durability)을 보장하는 필수 버퍼 역할을 한다.
- 마이크로 배치 방식의 특성상 1초 미만의 초저지연(latency)은 기대하기 어렵지만, 수초 내 지연은 허용 범위 내로 판단했다.
Related
-
스트림 처리 최적화 카탈로그 (A catalog of stream processing optimizations)
-
Adaptive Speculative Processing of Out-of-Order Event Streams
-
A Framework for Network Aware Caching for Video on Demand Systems - Errata
-
Robust and Energy Efficient Multimedia Systems via Likelihood Processing
-
A systematic approach to classify design-time global scheduling techniques
-
Pipelined Workflow Scheduling: Models and Algorithms (Survey)