Apache Storm 클러스터 아키텍처


Apache Storm의 주요 특징은 내결함성이 있고 빠르며 "SPOF(단일 실패 지점)" 분산 애플리케이션이 없다는 것입니다. 애플리케이션의 용량을 늘리기 위해 필요에 따라 여러 시스템에 Apache Storm을 설치할 수 있습니다.

Apache Storm 클러스터가 어떻게 설계되었는지와 내부 아키텍처를 살펴보겠습니다. 다음 다이어그램은 클러스터 설계를 보여줍니다.

core_concept.jpg

Apache Storm에는 Nimbus(마스터 노드)와 Supervisor(워커 노드)라는 두 가지 유형의 노드가 있습니다. Nimbus는 Apache Storm의 핵심 구성 요소입니다. Nimbus의 주요 작업은 Storm 토폴로지를 실행하는 것입니다. Nimbus는 토폴로지를 분석하고 수행할 작업을 수집합니다. 그런 다음 사용 가능한 감독자에게 작업을 할당합니다.

Supervisor에는 하나 이상의 작업자 프로세스가 있습니다. 감독자는 작업을 작업자 프로세스에 위임합니다. 작업자 프로세스는 필요한 만큼 많은 실행자를 생성하고 작업을 실행합니다. Apache Storm은 Nimbus와 하이퍼바이저 간의 통신을 위해 내부 분산 메시징 시스템을 사용합니다.

Component Description
Nimbus(마스터 노드) Nimbus는 Storm 클러스터의 마스터 노드입니다. 클러스터의 다른 모든 노드를 작업자 노드라고 합니다. 마스터 노드는 모든 작업자 노드에 데이터를 배포하고 작업자 노드에 작업을 할당하며 오류를 모니터링하는 역할을 합니다.
Supervisor(작업자 노드) 지침을 따르는 노드를 Supervisors라고 합니다. Supervisor에는 여러 작업자 프로세스가 있으며 nimbus에서 할당한 작업을 완료하기 위해 작업자 프로세스를 관리합니다.
Worker 프로세스Worker 프로세스는 특정 토폴로지와 관련된 작업을 수행합니다. 작업 자체를 실행하는 대신 작업자 프로세스는 실행자를 생성하고 특정 작업을 수행하도록 요청합니다. 작업자 프로세스에는 여러 실행자가 있습니다.
ExecutorExecutor는 작업자 프로세스에 의해 생성된 단일 스레드일 뿐입니다. 실행자는 하나 이상의 작업을 실행하지만 특정 Spout 또는 Bolt에 대해서만 실행합니다.
Task(태스크)Task는 실제 데이터 처리를 수행합니다. 그래서 그것은 주둥이 또는 볼트입니다.
ZooKeeper 프레임워크(ZooKeeper Framework)

Apache ZooKeeper는 강력한 동기화 기술로 클러스터(노드 그룹)를 이용하여 상호 조정하고 공유 데이터를 유지 관리하는 서비스입니다. Nimbus는 상태 비저장이므로 ZooKeeper를 사용하여 작업자 노드의 상태를 모니터링합니다.

ZooKeeper는 감독자가 후광과 상호 작용하는 데 도움을 줍니다. 후광과 감독자의 상태를 유지하는 역할을 담당합니다.

Storm은 무국적입니다. 상태 비저장 특성에는 고유한 단점이 있지만 실제로 Storm이 가능한 가장 빠르고 가장 빠른 방법으로 실시간 데이터를 처리하는 데 도움이 됩니다.

Storm은 완전한 상태 비저장은 아닙니다. Apache ZooKeeper에 상태를 저장합니다. Apache ZooKeeper에서 상태를 사용할 수 있으므로 실패한 네트워크를 다시 시작하고 중단된 부분부터 작업할 수 있습니다. 일반적으로 monit과 같은 서비스 모니터링 도구는 Nimbus를 모니터링하고 오류가 발생할 경우 다시 시작합니다.

Apache Storm에는 상태 유지 관리 기능이 있고 Pig와 같은 고급 API도 제공하는 Trident 토폴로지라는 고급 토폴로지도 있습니다. 다음 장에서는 이러한 모든 기능을 논의할 것입니다.