14주차 금요일, 70일차 Today I Learned
스트리밍 처리 (5)
: Spark Streaming
✏️ 학습 내용
1. Spark Streaming
이전에 배운 Spark은 빅데이터 처리 관련 다양한 기능을 제공한다고 했다. 그 중 Spark Streaming이란, 실시간 데이터 스트림 처리를 위한 Spark API로, Kafka, Kinesis, Flume, TCP 소켓 등의 다양한 소스에서 발생하는 데이터 처리와 Join, Map, Reduce, Window와 같은 고급 함수 사용이 가능하다.
- 데이터를 마이크로 배치로 처리
- 계속해서 쉬의 과정을 반복 (트리커)
- 이렇게 읽은 데이터를 앞서 읽은 데이터에 리플레이스
- 배치마다 데이터 위치 관리
- Fault Tolerance와 데이터 재처리 관리
Spark Streaming은 실시간 입력 데이터 스트림을 배치로 나눈 다음, 스파크 엔진에서 처리하여 최종 결과 스트림을 일괄적으로 생성하는 방식의 내부 동작을 수행한다.
2. Spark 환경 설정
Spark Cluster Manager로 local[n]을 지정한다. master를 local[n]으로 지정할 때, CPU 숫자에 맞게 n을 지정했다면 숫자만큼 스레드 뜨면서 병렬 처리가 가능해진다. 마스터는 클러스터 매니저를 지정하는 데 사용한다. 주로 개발이나 간단한 테스트 용도이며, 하나의 JVM에서 모든 프로세스를 실행한다.
3. 예제 프로그램
Spark에서 제공해주는 WordCount 예제 프로그램이 존재한다. Netcat을 사용해서 텍스트 스트림을 생성한다.
이 외에도 Structured Streaming으로 Kafka 토픽을 인풋 소스로 사용해서 처리할 수 있다. Kafka 특정 토픽에 저장하여 데이터가 쌓이고, 저장된 토픽 데이터를 인풋으로 Spark Streaming에 들어간다. 또한 Spark Streaming이 프로듀서 역할을 수행할 수도 있다.
💡 배운 점
- 배치 처리와 실시간 (스트리밍) 처리에 대해 배웠다.
- Kafka란 스트리밍 데이터를 중앙에 메세지 큐 형태로 저장해주는 플랫폼이다.
- Spark Streaming은 마이크로 배치 형태로 데이터를 실시간 처리해주는 Spark 확장 모듈이다.
- kafka 입장에서 이는 프로듀서 혹은 컨슈머가 된다.
☁️ 소감
전체적으로 스트리밍 데이터에 대한 강의를 배웠다. 스트리밍 데이터에서 가장 중요한 기술은 kafka인 것 같다. 실제로 아는 회사에서도 kafka를 도입하느라 애를 쓰고 있다는데, 뭔가 반가웠었다.
'Data Engineering > grepp 데브코스 : TIL' 카테고리의 다른 글
[TIL_2024.02.05] Spark 기타 기능, 메모리 관리 (1) | 2024.02.27 |
---|---|
[TIL_2024.01.29-02.02] 머신러닝 : ML E2E, 기초개념, 기초선형대수, 확률기초/분포, 선형회귀/분포 (0) | 2024.02.26 |
[TIL_2024.01.25] 스트리밍 처리 (4) : Kafka 기본 프로그래밍 (0) | 2024.02.26 |
[TIL_2024.01.24] 스트리밍 처리 (3) : Kafka 소개 (0) | 2024.02.26 |
[TIL_2024.01.23] 스트리밍 처리 (2) : Udemy 추천 엔진 발전 여정 (0) | 2024.02.26 |