지구정복
[Storm] Storm 개념 및 구성요소 본문
1. 개념
대규모 메시지성 데이터들이 수백 수천건이 발생하고 이를 Kafka에 담는다. Kafka에는 비동기성 대규모 메시지 데이터들을 버퍼링하기 위한 Topic을 제공하고 이 Topic에 있는 데이터를 Consumer가 빠르게 빼내줘야 한다. 왜냐하면 Topic의 메모리 혹은 Broker 디스크의 한계가 발생하기 때문이다. 한계가 발생하기 전에 원천에서 데이터가 빠르게 수백 수천건이 발생한다면 Consumer도 똑같이 빠르게 수백 수천건을 빼서 소비를 해줘야 한다. 그리고 이 데이터들을 영구 저장소인 HDFS, NoSQL, RDBMS, Redis 등에 저장을 해줘야 한다.
따라서 Consumer도 빠르게 데이터를 빼서 소비를 해야 하기 때문에 분산 병렬 처리를 해줘야 한다. 이를 담당하는 것이 Storm이다.
또한 Storm이 데이터를 영구저장소에 저장하기 전에 데이터 전처리, 집계, 분석 등을 제공하는 기능도 가지고 있다.
2. 구성요소
-Spout : 외부로부터 데이터를 유입받아 가공 처리해서 튜플을 생성, 이후 해당 튜플을 Bolt에 전송. 데이터를 빼내오는 역할
-Bolt : 튜플을 Spout로부터 받아 실제 분산 작업을 수행하며, 필터링, 집계, 조인 등의 연산을 병렬로 실행.
-Topology : Spout-Bolt의 데이터 처리 흐름을 정의, 하나의 Spout와 다수의 Bolt로 구성. Spout와 Bolt의 묶음
/카프카로부터 받는 데이터 (업무들)
-Nimbus : Toplogy를 Supervisor에 배포하고 작업을 할당, Supervisor를 모니터링하다가 필요 시 페일오버(Fali-Over)를 처리한다. Topology를 받아서 Supervisor에게 전달하는 역할
/ 받은 업무들을 Supervisor에게 뿌려주거나 Supervisor를 관리한다 (중대장)
-Supervisor : Topology를 실행할 Worker를 구동시키며 Topology를 Worker에 할당 및 관리. 하나의 Supervisor는 하나의 분산 노드라고 생각하면 된다. 여러 개의 분산노드가 있으면 각각의 분산노드에는 하나의 Supervisor가 존재한다.
/ Nimbus한테 받은 업무들을 Worker를 시켜서 일을 처리한다. (소대장)
-Worker : Supervisor 상에서 실행 중인 자바 프로세스로 Spout와 Bolt를 실행. Supervisor안에는 하나의 Worker가 존재하고 Topology를 작업시키는 역할
/ 일하는 역할 (용사)
-Executor : Worker 내에서 실행되는 자바 스레드. Tasker로 구성되어 있음 / 작업도구들
-Tasker : Spout 및 Bolt 객체가 할당
*참고
Spark Stream와 Storm의 차이는 Strom이 리얼타임 데이터를 처리한다면 Spark Stream은 마이크로 배치라고 불려서 배치처리의 주기를 마이크로 단위로 아주 짧게하면 실시간처리와 같게 되게된다.
'데이터 엔지니어링 정복 > Hadoop Ecosystem' 카테고리의 다른 글
[Redis] Redis 설치 및 기본 명령어(set, get) (0) | 2021.05.08 |
---|---|
[Esper] Esper 개념 및 구성요소 (0) | 2021.05.08 |
[Redis] Redis 개념 및 구성요소 (0) | 2021.05.07 |
[Flume] Source, Channel, Sink, Interceptor의 종류 및 예제 (0) | 2021.05.06 |
[Cloudera Manager] 클라우데라 매니저로 Flume, Kafka 설치하기 (0) | 2021.05.06 |