1. Kafka 사용 시나리오
- 실시간 데이터 스트리밍 및 메시징
- 실시간으로 데이터를 수집, 저장, 전송하는데 매우 효과적
- 웹사이트의 사용자 활동 로그, IoT 장치에서의 데이터 스트리밍 등 실시간으로 발생하는 데이터를 처리할 때 주로 사용
- 분산 데이터 파이프라인 구축
- 대용량으 데이터를 다양한 시스템이나 애플리케이션 간에 안정적으로 전달해야 할때.
- 데이터의 흐름을 관리하고, 여러 소스와 목적지 사이의 데이터를 신뢰성있게 이동시키는 역할
- 데이터 버퍼링 및 저장
- 데이터를 일시적으로 저장하는 버퍼 역할을 할 수 있음.
- 이를 통해 데이터의 손실 없이 나중에 처리할 수 있게 함.
- 시스템 간의 데이터 흐름을 조절하는 데 유용
2. Spark 사용 시나리오
- 대규모 데이터 처리 및 분석
- 대용량 데이터를 빠르게 처리하고 분석하는데 사용
- 대규모 데이터 세트의 복잡한 변환, 집계, 머신 러닝 모델 트레이닝
- 배치 및 스트리밍 데이터 처리
- 배치 처리와 스트리밍 데이터 처리 모두를 지원.
- 대향의 누적 데이터 처리 뿐만 아니라 실시간 데이터 스트림의 연속적인 처리도 가능
- 고급 분석 및 머신러닝
- MLlib 라이브러리를 사용하여 머신러닝 알고리즘을 구현하고, 대규모 데이터셋에 적용할 수 있음
- 복잡한 데이터 분석과 머신러닝 작업에 매우 효과적
3. 사례로 본 스택 선택
이해를 하기 위해 2가지 사례를 설정 해보았다. 개인적으로 Kafka는 실시간 처리, Spark는 배치 처리가 가장 큰 차이라고 이해했는데, 이를 구별하기 위한 2가지 사례를 제시하겠음
1. 실시간으로 트위터에 '태연'이라는 이름이 멘션될 때마다, 데이터를 가져오는 작업
2. 매일 네이버에 '태연'이라는 이름으로 검색되는 기사들을 크롤링하여 처리하는 작업
Case1. 실시간으로 트위터에 '태연'이라는 이름이 멘션될 때마다, 데이터를 가져오는 작업
이 경우는 실시간 처리 사례다. 트위터에서 멘션이 발생하는 순간 데이터를 포착하고 처리
해당 사례에서는 Kafka로 실시간 데이터 스트림을 수집하고, 필요한 시스템이나 애플리케이션으로 전달하는 데 사용될 수 있음.
Producer => 트위터 API를 이용하여 실시간으로 '태연'멘션을 검색하고, 이를 Kafka 토픽으로 전송
Consumer => Kafka 토픽에서 데이터를 받아 추가 처리하거나 저장
Case2. 매일 네이버에 '태연'이라는 이름으로 검색되는 기사들을 크롤링하여 처리하는 작업
해당 경우는 배치 처리 사례이다. 매일 정해진 시간에 '태연'이라는 이름으로 네이버 기사를 크롤링하는 것은 배치 처리의 예입니다. 여기서는 특정 시점에 데이터를 일괄적으로 수집하고 처리한다.
- 배치처리의 사례
- Spark는 크롤링한 데이터를 처리하고 분석하는데 사용될 수 있음. 크롤링된 데이터를 Spark로 로드하여 변환, 집계, 분석 등의 작업을 수행할 수 있음.
4. 정리
Kafka
- 주로 실시간 데이터 스트리밍, 메시징, 분산 데이터 파이프라인 구축에 사용
- 살짝, 버퍼? , 중간에 거쳐가는 포인트 같은 느낌
Spark
- 대규모 데이터의 배치 및 스트리밍 처리, 복잡한 분석, 머신러닝 작업에 적합
- 분석까지 한다면 Spark