[Spark] Spark Streaming 소개와 Kafka 연동

MINJI·2025년 3월 20일
0

📈 빅데이터

목록 보기
9/9

⭐ Spark Streaming

1. Spark Streaming 이란?

실시간 데이터 스트림 처리를 위한 Spark API

  • Kafka, Kinesis, Flume, TCP 소켓 등의 다양한 소스에서 발생하는 데이터 처리 가능
  • Join, Map, Reduce, Window와 같은 고급 함수 사용 가능

2. Spark Streaming 동작방식

  • 데이터를 마이크로 배치로 처리
  • 계속해서 위의 과정을 반복 (루프)
  • 이렇게 읽은 데이터를 앞서 읽은 데이터에 머지
  • 배치마다 데이터 위치 관리 (시작과 끝)
  • Fault Tolerance와 데이터 재처리 관리 (실패시)

3. Spark Streaming의 내부 동작

  • Spark Streaming은 실시간 입력 데이터 스트림을 배치로 나눈 다음
  • Spark Engine에서 처리하여 최종 결과 스트림을 일괄적으로 생성
    • Dstream과 Structured Streaming 두 종류가 존재

Dstream vs. Structured Streaming

DStreamStructured Streaming
RDD 기반 스트리밍 처리DataFrame 기반 스트리밍 처리
Spark SQL 엔진의 최적화 기능 사용불가Catalyst 기반 최적화 혜택을 가져감
이벤트 발생 시간 기반 처리 불가이벤트 발생 시간 기반 처리 가능
개발이 중단된 상태 (RDD 기반 모두에 적용됨)계속해서 기능이 추가되고 있음

4. Source & Sink

소스와 싱크는 외부 시스템(소스)에서 스트리밍 데이터를 수집하고 처리된 데이터를 외부 시스템(싱크)으로 출력하는 것을 용이하게 하는 구성 요소

Source

  • Kafka, Amazon Kinesis, Apache Flume, TCP/IP 소켓, HDFS, File 등을 Spark Structured Streaming에서 처리할 수 있도록 해줌
  • Spark DataFrame과 비교하면 readStream을 사용하는 점이 다름

Sink

  • Spark Structured Streaming에서 처리된 데이터를 외부 시스템이나 스토리지로 출력 가능하게 해줌
  • Sink는 변환되거나 집계된 데이터가 어떻게 쓰이거나 소비되는지를 정의
  • OutputMode : 현재 Micro Batch의 결과가 Sink에 어떻게 쓰일지 결정

⭐ Spark 환경 설정

1. Local Standalone Spark 소개

  • Spark Cluster Manager로 local[n] 지정
    • master를 local[n]으로 지정
    • master는 클러스터 매니저를 지정하는데 사용
  • 주로 개발이나 간단한 테스트 용도
  • 하나의 JVM에서 모든 프로세스를 실행
    • 하나의 Driver와 하나의 Executor가 실행됨
  • Executor 안에 생성되는 쓰레드 수
    • local : 하나의 쓰레드만 생성
    • local[*] : 컴퓨터 CPU 수만큼 쓰레드 생성

2. Local Standalone Spark 설치

Spark 다운로드
https://spark.apache.org/downloads.html

세부 설치 방법 : Github 문서 참고 (윈도우)
https://github.com/keeyong/beginner-spark-programming-with-pyspark/blob/main/spark/local_installation_windows.md

⭐ WordCount 예제 프로그램

Spark 에서 제공해주는 예제 프로그램
https://spark.apache.org/docs/latest/streaming-programming-guide.html#a-quick-example

0개의 댓글