아파치 스톰 클러스터 구축(Apache Storm Cluster Setup)
Apache Storm Cluster Setup
스톰 클러스터를 구축해 봅시다. 이 포스트는 클러스터 구축에만 초점이 맞춰져 있습니다. 용어에 대한 설명은 간략하게 하거나 또는 없을 수 있습니다. :)
Prepare to library for Storm Cluster Setup
우선 다음 목록에 있는 프로그램들을 설치해야 합니다.
- Java 6 이상(가능하다면 8 이상 추천)
- Python 2.6.6 이상
위 프로그램들은 버전을 먼저 확인해보고 설치 되어있다면 지나갑니다. 다만 파이썬은 버전에 민감할 수 있으니 문제가 생기면 파이썬 버전을 맞춰봅시다.
Zookeeper Cluster Setup
다음은 주키퍼 클러스터를 구축합니다. 구축 방법은 Zookeeper Cluster(Multi-Node) 링크를 확인하세요.
Storm Cluster Hosts
주키퍼 클러스터 구축까지 끝났으면 스톰 클러스터를 구축해봅시다. 다음과 같은 호스트들을 준비하고 진행합니다. 이번 포스트에서는 호스트 3대를 기준으로 구축합니다.
- storm-1.jdm.kr - nimbus(master)
- storm-2.jdm.kr
- storm-3.jdm.kr
Download Apache Storm Package(Each node)
스톰 패키지를 다운로드 받아야 합니다. 모든 노드에서 진행합니다. 저는 0.10.0 버전으로 진행했습니다.
$ wget http://apache.mirror.cdnetworks.com/storm/apache-storm-0.10.0/apache-storm-0.10.0.tar.gz $ tar -xzf apache-storm-0.10.0.tar.gz $ ln -s apache-storm-0.10.0 storm $ cd storm
Storm Configuration(Each node)
모든 노드에 스톰 패키지를 다운로드 받았다면 환경설정을 해봅시다. 이부분 역시 모든 노드에서 진행합니다. 참고로 _storm_root_이 뜻하는 것은 스톰 패키지가 존재하는 루트 디렉토리입니다.
수정할 파일은 _storm_root_/conf/storm.yaml 파일입니다.
$ cd _storm_root_/conf $ vi storm.yaml
파일을 열어 다음처럼 수정합니다.
# storm.yaml storm.zookeeper.servers: - "zoo-1.jdm.kr" - "zoo-2.jdm.kr" - "zoo-3.jdm.kr" nimbus.seeds: ["storm-1.jdm.kr"]
Start Storm Cluster
환경 설정까지 끝났다면 이젠 구동시켜야 할 차례입니다. 호스트 중에서 1번 호스트storm-1.jdm.kr는 nimbus(master)가 옆에 있었다는 것 기억하시나요?
이번 포스트에서 1번 호스트는 님버스nimbus 서버의 역할도 같이 합니다. 자세한 내용은 스톰 문서를 확인하세요.
Start nimbus(first node only)
님버스는 마스터 노드에서 실행하는 데몬입니다. 다음과 같은 커맨드를 1번 노드에서만 진행합니다.
$ nohup _storm_root_/bin/storm nimbus >> nimbus.log 2>&1 &
Start supervisor(Each node)
슈퍼바이저는 워커 노드에서 실행하는 데몬입니다. 각각의 노드에서 다음과 같은 커맨드로 기동합니다.
$ nohup _storm_root_/bin/storm supervisor >> supervisor.log 2>&1 &
Start storm UI(first node only)
스톰 UI를 기동하는데 1번 노드에서만 진행합니다. 스톰 UI라는 것은 스톰 클러스터를 모니터링할 수 있게 도와주는 시각화 도구입니다. 웹으로 확인 할 수 있으므로 편리합니다.
$ nohup _storm_root_/bin/storm ui >> ui.log 2>&1 &
http://storm-1.jdm.kr:8080/index.html에 접속해서 스톰 클러스터의 전체적인 상황을 확인 할 수 있습니다.
TIP. 스톰 UI에서 확인할 수 있는 정보를 REST API로도 확인할 수 있습니다. https://github.com/apache/storm/blob/master/docs/documentation/ui-rest-api.md를 참조하세요.
Start Logviewer(Each node)
로그뷰어Logviewer는 스톰 UI에서 로그 파일을 바로 읽어볼 수 있도록 해주는 플러그인 같은 역할을 합니다.
$ nohup _storm_root_/bin/storm logviewer > logviewer.log &
Start Example Topology(first node only)
예제로 주어진 토폴로지Topology를 실행시켜 봅시다. 1번 노드에서 진행합니다. 아래와 같은 방법으로 구동시켜볼 수 있습니다
# 예제 토폴로지 jar를 님버스에 업로드하는 과정입니다. $ _storm_root_/bin/storm jar ../examples/storm-starter/storm-starter-topologies-0.10.0.jar storm.starter.RollingTopWords production-topology remote
TIP. 토폴로지를 배포할때에 님버스 노드에서만 진행해도 클러스터로 설정된 다른 노드들로 전파가 됩니다.
스톰 UI에서 Topology summary 부분에 production-topology 이름의 토폴로지가 있다면 제대로 실행된 겁니다. 더 자세한 정보는 아래 위치의 README 파일을 읽어보시면 됩니다.
$ cd _storm_root_/examples/storm-starter
Kill Example Topology(first node only)
토폴로지 프로세스를 내리는 방법은 많이 있지만 대표적으로 스톰 UI에서 Kill 버튼으로 내리던지 아니면 커맨드 라인으로 실행합니다.
$ _storm_root_/bin/storm kill production-topology 1
물론 Kill 외에도 다양한 커맨드가 존재합니다. 자세한 내용은 http://storm.apache.org/documentation/Command-line-client.html를 확인하세요.
Closing Remarks
간단하게 스톰 클러스터 구축에 대해 알아봤습니다. :)