본문 바로가기
Spark

Batch Processing과 Stream Processing

by 앵남(Andy) 2021. 12. 13.

배치처리(Batch Processing)

배치(Batch) == 일괄

배치 프로세싱( Batch Processing) == 일괄 처리 

많은 양의 데이터를 정해진 시간에 한번에 처리하는 것

 

1. 한정된 대량의 데이터

2. 특정 시간

3. 일괄 처리

 

전통적으로 쓰이는 데이터 처리 방법

Batch Processing을 언제 사용할까 

1. 실시간성을 보장하지 않아도 될 때

2. 데이터를 한꺼번에 처리할 수 있을 때

3. 무거운 처리를 할때 (예 ML학습)

 

4. 매일 다음 14일의 수요와 공급을 예측

5. 매주 사이트에서 관심을 보인 유저들에게 마케팅 이메일 전송

6. 매주 발행하는 뉴스레터

7. 매주 새로운 데이터로 머신러닝 알고리즘 학습

8. 매일 아침 웹스크래핑/크롤링

9. 매달 월급 지급

 

배치프로세싱은 어쩔때는 한개의 데이터를 처리할 수 도 있고 두개의 데이터를 처리할 수 도있고 아무것도 처리안할 때도 있다. 배치당 처리하는 데이터의 수가 달라지면서 리소스를 비효율적으로 사용하게 된다.

 

실시간처리(Stream Processing)

실시간으로 쏟아지는 데이터를 계속 처리하는 것

이벤트가 생길때마다 데이터가 들어올때마다 처리

 

스트림프로세싱은 언제사용할까?

1. 실시간성이 보장되야 할 때

2. 데이터가 여러 소스로부터 들어올 때 

3. 데이터가 가끔 들어오거나 지속적으로 들어올 때 

4. 가벼운 처리를 할때

 

5. 사기거래 탐지

6. 이상탐지

7. 실시간알림

8. 비지니스 모니터링

9. 실시간 수요/공급 측정및 가격책정

10. 실시간 기능이 들어가는 어플리케이션 

 

스트림프로세싱은 데이터가 요청이 들어올 때 마다 처리할 수 있습니다.

 

 

 

일반적인 배치처리 플로우

1. 데이터를 모은다

2. 데이터베이스에서 읽어서 처리한다.

3. 다시 데이터베이스에 담는다.

 

일반적인 스트림처리 플로우

1. 데이터가 들어올때(ingest)

2. 쿼리/처리 후 state 업데이트

3. 데이터베이스에 담는다.

 

 

마이크로배치

데이터를 조금씩 모아서 프로세싱하는 방식

batch 프로세싱을 잘게 쪼개서 스트리밍을 흉내내는 방식

 

'Spark' 카테고리의 다른 글

Spark 이해하기  (0) 2021.12.13

댓글