Apache Storm
실시간으로 스트리밍 데이터를 처리하는 시스템
Apache Storm은 엔터프라이즈 Hadoop에 안정적인 실시간 데이터 처리 기능을 추가합니다. Storm on YARN은 실시간 분석, 머신 러닝 및 지속적인 운영 모니터링이 필요한 시나리오에 강력한 기능을 제공합니다.
Storm은 Apache Slider를 통해 YARN과 통합되며, YARN은 Storm을 관리하는 동시에 최신 데이터 아키텍처의 데이터 거버넌스, 보안 및 운영 구성요소에 적합한 클러스터 리소스를 고려합니다.
Storm 수행하는 작업
Storm은 대량의 고속 데이터 처리를 위한 분산된 실시간 계산 시스템입니다. Storm은 적당한 크기의 클러스터에서 노드별로 초당 100만 개 이상의 레코드를 처리할 수 있어 속도가 매우 빠릅니다. 기업은 이러한 속도를 활용하여 Hadoop의 다른 데이터 액세스 애플리케이션과 결합함으로써 원치 않는 이벤트를 방지하거나 긍정적인 결과를 최적화할 수 있습니다.
이에 따른 새로운 비즈니스 기회로는 실시간 고객 서비스 관리, 데이터 수익화, 운영 대시보드, 사이버 보안 분석 및 위협 감지 등이 있습니다.
다음은 Storm의 일반적인 "예방" 및 "최적화" 사용사례입니다.
"Prevent" Use Cases | "Optimize" Use Cases | |
---|---|---|
Financial Services |
|
|
Telecom |
|
|
Retail |
|
|
Manufacturing |
|
|
Transportation |
|
|
Web |
|
|
Storm은 간단하며 개발자는 어떤 프로그래밍 언어로라도 Storm 토폴로지를 작성할 수 있습니다. 5가지 특성 덕분에 Storm은 실시간 데이터 처리 워크로드에 이상적입니다. Storm의 특징은 다음과 같습니다.
- 빠른 속도 – 노드별로 초당 백만 개의 100바이트 메시지를 처리하는 것으로 벤치마킹됨
- 우수한 확장성 – 시스템 클러스터 전반에서 실행되는 병렬 계산 지원
- 내결함성 - 작업자가 멈추면 Storm이 자동으로 재시작하도록 합니다. 노드가 멈추면 작업자가 다른 노드에서 다시 시작됩니다.
- 우수한 안정성 – Storm은 각 데이터 단위(튜플)가 최소 한 번이나 정확히 한 번 처리되도록 보장합니다. 메시지는 오류가 있는 경우에만 재생됩니다.
- 작동 용이성 – 표준 구성은 가동 첫날부터 프로덕션에 적합합니다. Storm은 배포 후 작동이 손쉽습니다.
Storm 작동 원리
Storm 클러스터에는 다음 세 가지 노드 세트가 있습니다.
- Nimbus 노드(마스터 노드, Hadoop JobTracker와 유사):
- 실행을 위해 계산 업로드
- 클러스터 전반에서 코드 분산
- 클러스터에서 작업자 실행
- 계산 모니터링 및 필요에 따라 작업자 재할당
- ZooKeeper 노드 – Storm 클러스터 조정
- 감독자 노드 – Zookeeper를 통해 Nimbus와 통신하고 Nimbus의 신호에 따라 작업자를 시작하고 중지함
다음과 같은 5가지 핵심 추상화를 통해 Storm의 데이터 처리 방법을 이해할 수 있습니다.
- 튜플 – 순서가 지정된 요소 목록. 예를 들어 “4튜플”은 (7, 1, 3, 7)일 수 있음
- 스트림 – 제한 없는 튜플 순서.
- 스파우트 – 계산에 포함된 스트림의 소스(예: Twitter API)
- 볼트 – 입력 스트림을 처리하고 출력 스트림을 생성. 이 핵심 추상화는 기능 실행, 데이터의 필터링, 집계 및 결합, 데이터베이스와의 통신이 가능.
- 토폴로지 – (다음 다이어그램과 같이) 스파우트나 볼트의 네트워크로서 시각화되는 전체 계산
Storm 사용자는 데이터가 스파우트에서 스트리밍될 때 이를 처리하는 방법에 대한 토폴로지를 정의합니다. 데이터가 들어오면 처리되고 결과는 Hadoop으로 전달됩니다. Storm과 Hadoop을 통합하고 기업 도입에 알맞은 태세를 정비하기 위해 커뮤니티가 어떻게 노력하고 있는지 자세히 알아보십시오.