이야기박스

Streaming 비교, Spark Streaming - Flink Streaming 본문

Computer & Data/Big Data

Streaming 비교, Spark Streaming - Flink Streaming

박스님 2022. 3. 24. 13:00
반응형

medium에서 이미지가 이뻐서 가져와봤습니다.

이번 포스팅에서는 Spark Streaming과 Flink Streaming의 차이점에 대해서 가볍게 살펴보려고 합니다. 

 

Streaming이란?

우선 스트리밍에 대해서 간단하게 집고 가려고 합니다. 일반적으로 사용되는 스트리밍은 크게 두 가지로 나눌 수 있습니다.

 

micro-batch streaming vs native streaming

 

마이크로 배치 방식은 사실은 배치 프로세스입니다. 하지만 배치 간격을 아주 짧게 잡아 실시간처럼 처리하는 것이죠. 그리고 네이티브 스트리밍이 우리가 직관적으로 알고 있는 이벤트 기반 실시간 처리 방법입니다.

 

비교

스파크 스트리밍은 마이크로 배치 방식을 사용하고 있고 플링크는 네이티브 스트리밍 방식을 사용하고 있습니다. 즉, 두 기술의 큰 차이점들은 각 스트리밍 방식의 차이점에 기인합니다.

 

# 성능

스파크는 마이크로 배치 방식을 사용하기 때문에 배치 윈도우로 인한 지연이 발생할 수밖에 없습니다. 때문에, 플링크에 비해 지연 시간 대비 낮은 처리량을 갖게 됩니다.

 

# 장애 대응

스파크는 특정 Executor에 문제가 발생하면, Recomputations을 통해 리소스 재할당을 합니다. 즉, 다른 노드로 배치 작업을 다시 할당하는 것이죠.

 

반면에 플링크는 Checkpoint Barrier, Backpressure를 통하여 문제가 인지되면 스트리밍 속도를 조절함으로써 문제를 해결합니다. 즉, 파이프라인 뒤편에서 데이터를 받지 못하면, 앞의 파이프라인에서 Consume하는 속도를 이에 맞추어 줄이게 됩니다. 흐름 제어를 하게 되는 셈이죠.

 

# 메시지 전달 방식

두 서비스 모두 Exactly once 전달이 가능합니다.

 

# 뭐가 더 좋은가?

위 내용만 보면 네이티브 스트리밍을 지원하는 플링크를 사용해야 할 것 같습니다. 하지만 현실은 꼭 그렇지만은 않습니다. 마이크로 배치는 네이티브 스트리밍 방식에 비해 대규모 데이터의 복잡한 분석, 처리에 용이하다는 장점이 있습니다. 때문에 서비스 환경에 따라 적절한 스트리밍 서비스 선택이 중요할 것 같습니다.

반응형