> ## Content Index
> Fetch the complete content index at: https://www.popit.kr/llms.txt
> Use this file to discover other available public pages before exploring further.

# [번역글] Spark Streaming의 내부
- URL: https://www.popit.kr/inside-spark-streaming-translation/
- Published: 2018-04-19T13:03:24.000Z
- Updated: 2018-04-24T04:28:47.000Z
- Author: Jeon Deuk Jin
- Tags: #소프트웨어, Kafka, #해외글 요약, hadoop, bigdata, #데이터분석, Spark, #아키텍처 및 설계, #팁, spark streaming, micro batch, 스트리밍

## **여는 글**

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

![Internals of Spark Streaming](https://www.popit.kr/content/images/wp/2018/04/ready_player_one-1024x641.jpg)

독서 시간 : 3분

## **| 발췌...**

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

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

1. [Apache Spark programming guide ](http://spark.apache.org/docs/latest/programming-guide.html?ref=popit.kr)아직 기초가 없다면 이 문서로 이동합니다.
2. [Apache Spark streaming guide(v.1.2) ](https://spark.apache.org/docs/1.2.0/streaming-programming-guide.html?ref=popit.kr)최상의 입문서 입니다. ([latest](https://spark.apache.org/docs/latest/streaming-programming-guide.html?ref=popit.kr))

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

```scala
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](&nbsp;ssc, kafkaParams, topics)
:
:
ssc.start();
```

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

[![spark streaming busy diagram](https://www.popit.kr/content/images/wp/2018/04/spark.png)](http://bytecontinnum.com/wp-content/uploads/2015/10/spark.png?ref=popit.kr)

*상세 내용의 일부는 의도적으로 생략하였습니다.*

- 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](https://www.popit.kr/content/images/wp/2018/04/dfa591fd60697ad0369d8b6d699259cd-150x150.jpeg)

 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](https://www.popit.kr/content/images/wp/2018/04/28468194_2011079945599297_5206148957827382702_n-150x150.jpg)

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