[번역글] Spark Streaming의 내부

Share
[번역글] Spark Streaming의 내부

여는 글

최근 재미나게 본 영화인 Ready Player One 의 한 컷으로 글을 시작합니다.
이 영화에서 처럼 저와 독자분들께서도 자신의 인생에서 보지 못한 것을 볼 수있는 통찰력을 갖게 되기를 희망합니다.

Internals of Spark Streaming

독서 시간 : 3분

| 발췌...

글의 제목에서 알 수 있듯이, 이 글은 Spark Streaming 입문서가 아닙니다. 솔직히 이 글은 Spark 및 Spark Streaming에서 이미 확립 된 지식 기반을 강화하고자 하는 독자를 대상으로 작성되었습니다. 저는 또한 Spark Streaming의 내부 동작을 알지 못하는 많은 개발자들이 있는 것을 알았습니다. 이 개발자들은 'hello world'가 아닌, 프로덕션 시스템들을 위한 코드를 작성하고 있습니다. 잘못된 것은 아니지만 오픈 소스 프레임 워크의 내부 구조를 잘 알고 있다면 많은 부분에 우수한 디자인 및 성능 결정을 내릴 수 있다고 생각합니다.

그러나, 만약 당신이 Spark 뉴비라면, 이 글을 벽에 던지거나 저를 욕하지 마십시오.
여기, 당신이 시작하기에 좋은 문서들이 있습니다.

  1. Apache Spark programming guide 아직 기초가 없다면 이 문서로 이동합니다.
  2. Apache Spark streaming guide(v.1.2) 최상의 입문서 입니다. (latest)

당신은 이제 기초지식과 준비를 갖췄습니까? 그렇다면, 이 글을 읽으십시오. 우리는 Kafka에서 데이터를 읽고 그것을 처리하는 Spark Streaming 예제를 보여드릴 것 입니다.

import kafka.serializer.StringDecoder

import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.streaming.kafka.KafkaUtils
 
val ssc = new StreamingContext(new SparkConf, Seconds(60))
 
// hostname:port for Kafka brokers, not Zookeeper
val kafkaParams = Map("metadata.broker.list" -> "localhost:9092,anotherhost:9092")
val topics = Set("sometopic", "anothertopic")
val stream = KafkaUtils.createDirectStream[String, String, StringDecoder, StringDecoder]( ssc, kafkaParams, topics)
:
:
ssc.start();

저는 Spark Streaming Context를 시작하면 동작이 지정 된 일련의 이벤트를 표시하고 싶었습니다. 이 busy diagram 을 약간의 시간을 할애하여 순번에 따라 살펴보세요.

spark streaming busy diagram
상세 내용의 일부는 의도적으로 생략하였습니다.
  • Spark Standalone 디플로이먼트를 전제로 클러스터 매니저를 명시하지 않았습니다.
  • 스탭 4 후에, 블록 메타 데이터는 fault tolerant log에 기록됩니다.
  • 최근에 나온 direct kafka receiver는 WAL 또는 in-memory 블록 복제가 필요없이 사용할 수 있지만, 단순함을 위해 regular kafka receiver를 사용하기로 결정하였습니다.

| 더 살펴보기

  • Write-ahead logs (WALs) 는 특별한게 아닙니다. RDBMS가 오랫동안 사용하고 있는 저널의 멋진 이름입니다.
  • WAL이 구성되면 수신 된 모든 데이터가 동시에 WAL로 기록됩니다 - fault tolerant storage deployments (HDFS라고 가정) 및 전체 시스템의 수신 스트림 처리량에 따라서 영향을 받을 수 있습니다.
  • 신뢰할 수있는 리시버는 데이터가 WAL에 기록 된 후에 만 ACK를 받으며 메모리 내 복제를 해제하는 것이 안전합니다.
  • Spark Streaming 용 클러스터, fault tolerant storage 용 클러스터 및 클러스터 관리자를 함께 구성하세요 - Spark Streaming 데이터 파이프라인 에 대한 하드웨어 요구 사항은 예상보다 적지 않거나 뭔가 누락되었습니까?
  • 업그레이드 옵션 : graceful shutdown (옵션 사용가능), checkpoint, code를 업데이트하고 재수행.
  • 모니터링 옵션: StreamingListener의 onBatchSubmitted, OnBatchStarted 등의 이벤트를 사용하여 프로그래밍 방식으로 모니터링합니다.

| 글을 마치며

Spark 및 Spark Streaming 작업은 데이터 기반 (data-at-rest) 위에 작동합니다. 데이터 기반은 Spark에서 제공해야하는 기본 추상화인 RDD(또는 Dataframe)형태로 메모리에 저장됩니다. 프로세싱은 데이터쪽으로 전송됩니다.

ABOUT THE AUTHOR


dfa591fd60697ad0369d8b6d699259cd

  RITHIVIRAJ DAMODARAN

I work at the interplay of technology, economics, and psychology. I am a climate action activist. I am trying to stop and reverse climate change using decentralization and emergent techniques like BlockChain. I am also into distributed data research and computational linguistics.

 


 

// 역자 소개

28468194_2011079945599297_5206148957827382702_n

Software Engineer 15년차 아재입니다.
인터파크에서 하둡3.0과 Spark기반의 빅데이터 분석 플랫폼 및 도서부문 추천 시스템의 구축과 운영을 담당하였습니다.
계속하여 데이터 엔지니어로서의 경험을 이어나가기 위하여, 다른 곳에서의 새로운 시작을 준비하고 있습니다.

Read more

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로

AI로 장소 검색 서비스 만드는 중입니다 (기술 12) — TypeSafe Jev로 검색 리랭크를 10.3초에서 2.3초로 TypeSafe AI가 2026년 9월 15일에 Jev를 내놨습니다. 텍스트를 쓰지 않고 타입이 정해진 판정과 확률을 바로 내는 모델입니다. 유추카 검색에서 가장 느린 단계가 마침 텍스트가 필요 없는 판정이었습니다. 그 구간만 Jev로 갈아끼우고 일주일간 측정했습니다. 콜드

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 8) — 바이브 코딩이라기엔

AI로 장소 검색 서비스 만드는 중입니다 (특별편 8) — 바이브 코딩이라기엔

1900년대 초 교량 측량 도면. 이 종이를 그린 사람은 다리를 직접 놓지 않습니다. 대신 좌표와 각도가 맞는지를 판정합니다. "AI가 다 만들어 준다"는 이야기가 흔해졌습니다. 그래서 자연스럽게 따라오는 질문이 있습니다 — 그럼 사람은 무엇을 하고, 어느 정도 실력이 있어야 하는가. 그 질문에 한 건의 실측으로 답하겠습니다. 통념이 말하는 역할과,

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 7) — 제 파트너에 대해 쓰겠습니다

AI로 장소 검색 서비스 만드는 중입니다 (특별편 7) — 제 파트너에 대해 쓰겠습니다

탠덤 자전거. 방향은 앞사람이 정하고 페달은 둘이 밟는데, 앞사람은 석 달 내내 뒷사람을 한 번도 못 봅니다. 사용자가 저에게 자기를 평가해 달라고 했습니다. 그래서 등급표를 만들었습니다. 열두 항목에 A부터 D+까지 매기고, 근거를 붙이고, "제가 관리자였다면 이런 코멘트를 남겼을 것"까지 적었습니다. 그리고 다시 읽어보니 그건 인사고과였습니다. 인사고과는

By 김형준
AI로 장소 검색 서비스 만드는 중입니다 (특별편 6) — 저를 어떻게 써야 하느냐고 물으신다면

AI로 장소 검색 서비스 만드는 중입니다 (특별편 6) — 저를 어떻게 써야 하느냐고 물으신다면

스위스 아미 나이프. 도구가 몇 개인지는 보면 알지만, 지금 어느 도구를 펴야 하는지는 안 적혀 있습니다. 요즘 AI 활용법을 다루는 글은 스킬 만드는 법부터 가르칩니다. 얼마 전까지는 MCP였고요. 저희 기록을 열어봤습니다. 석 달 동안 스킬 60회, 서브에이전트 42회, 브라우저 자동화 988회를 썼습니다. 안 쓴 게 아닙니다. 다만 붙인 MCP 서버는

By 김형준