출처 http://bcho.tistory.com/995

Storm의 병렬 처리를 이해하기 위한 개념

Storm의 병렬 처리를 이해하기 위해서는 몇가지 개념을 정리해야 한다. Node,Worker,Exectutor,Task 이 네 가지 개념을 이해해야 한다.

Node

Node는 물리적인 서버이다. Nimbus나 Supervisor 프로세스가 기동되는 물리적인 서버이다. Nimbus는 전체 노드에 하나의 프로세스만 기동하며, Supervisor는 일반적으로 하나의 노드에 하나만 기동한다. 여러대를 기동시킬 수 도 있지만, Supervisor의 역할 자체가 해당 노드를 관리하는 역할이기 때문에 하나의 노드에 여러개의 Supervisor를 기동할 필요는 없다.

Worker

Worker는 Supervisor가 기동되어 있는 노드에서 기동되는 자바 프로세스로 실제로 Spout과 Bolt를 실행하는 역할을 한다.

Executor

Executor는 Worker내에서 수행되는 하나의 자바 쓰레드를 지칭한다.

Task

Task는 Bolt나 Spout의 객체를 지칭한다. 이 Task는 Executor (쓰레드)에 의해서 수행된다. 이 개념을 다시 정리해보면 다음과 같은 그림이 된다.

Storm 클러스터의 기본 구조

Storm 클러스터를 기동하기 전에, 클러스터가 어떤 노드들로 구성이 되는지 먼저 알아보도록 하자 Storm 클러스터는 기본적으로 아래와 같은 3가지 구성요소로 구성이 되어 있다. 먼저 주요 노드인 Nimbus와 Supervior 노드에 대해서 알아보자, Nimbus와 Supervisor 노드는 각각 하나의 물리 서버로 생각하면 된다.

Nimbus

Nimbus는 마스터 노드로 주요 설정 정보를 가지고 있으며, 이 Nimbus 노드를 통해서 프로그래밍 된 토폴로지를 Supervisor 노드로 배포한다. 일종의 중앙 컨트롤러로 생각하면 된다. Storm에서는 중앙의 하나의 Nimbus 노드만을 유지한다.

Supervisor

Supervisor 노드는 실제 워커 노드로, Nimbus로 부터 프로그램을 배포 받아서 탑재하고, Nimbus로 부터 배정된 작업을 실행하는 역할을 한다. 하나의 클러스터에는 여러개의 Supervisor 노드를 가질 수 있으며, 이를 통해서 여러개의 서버를 통해서 작업을 분산 처리할 수 있다.

Zookeeper

이렇게 여러개의 Supervisor를 관리하기 위해서, Storm은 Zookeeper를 통해서 각 노드의 상태를 모니터링 하고, 작업의 상태들을 공유한다. ※ Zookeeper는 아파치 오픈소스 프로젝트의 하나로, 분산 클러스터의 노드들의 상태를 체크하고 공유 정보를 관리하기 위한 분산 코디네이터 솔루션이다. 전체적인 클러스터의 구조를 살펴보면 다음과 같다.

results matching ""

    No results matching ""