실시간 데이터 처리용으로 쓰임새가 늘어나고 있는 스톰Storm을 설치해 봤는데, 그 과정을 정리해 본다.
설치 순서
- 자바 설치 (1.6 이상 설치되어 있다고 가정)
- 주키퍼ZooKeeper 설치
- ZeroMQ 설치
- JZMQ 설치
- 스톰 님버스Nimbus 설정
- 스톰 수퍼바이저Supervisor 설정
- 클러스터 시작하기
- zk1: 주키퍼 설치
- storm-nimbus: 님버스 설치, ZeroMQ, JZMQ
- storm-sup1 ~ storm-sup3: 수퍼바이저 설치, ZeroMQ, JZMQ
4. 주키퍼 실행
$ cd /data1/program/zookeeper-3.4.5/bin
$ ./zkServer.sh start
JMX enabled by default
Using config: /data1/program/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
ZeroMQ 설치 (storm-nim, storm-sup1~storm-sup3 장비)
ZeroMQ는 스톰이 통신할 때 사용하는 라이브러리이다.
1. 필요 라이브러리 설치
$ yum install gcc gcc-c++ libuuid-devel
2. ZeroMQ 설치
$ wget http://download.zeromq.org/zeromq-4.0.3.tar.gz
$ tar xzf zeromq-4.0.3.tar.gz
$ cd zeromq-4.0.3
$ ./configure
$ make
$ make install
설치가 끝나면 /usr/local/lib/ 디렉토리에 libzmq.so 파일이 있는 확인해보자.
JZMQ 설치 (storm-nim, storm-sup1~storm-sup3 장비)
1. git 설치 / libtool 설치
git으로부터 소스를 다운로드 받으므로, git을 설치한다. git에서 clone 하기 싫다면, Github 사이트에서 직접 다운로드 받아도 된다.
$ yum install git libtool
2. JZMQ 설치
JAVA_HOME이 알맞게 설정되어 있어야 한다.
$ git clone https://github.com/nathanmarz/jzmq.git
$ cd jzmq
$ ./autogen.sh
$ ./configure
$ make
$ make install
/usr/local/share/java 디렉토리에 zmq.jar 파일이 생성된 것을 확인할 수 있다.
스톰 설치 (storm-nim, storm-sup1~storm-sup3 장비)
1. 스톰 다운로드
님버스와 수퍼바이저를 실행할 장비에 모두 Storm을 다운로드해서 설치한다. 아래 다운로드 주소는 http://storm-project.net/downloads.html 에서 구하면 된다.
$ wget https://dl.dropboxusercontent.com/s/tqdpoif32gufapo/storm-0.9.0.1.tar.gz
$ tar xzf storm-0.9.0.1.tar.gz
$ ln -s storm-0.9.0.1 storm
2. 스톰 데이터 디렉토리
님버스와 수퍼바이저로 사용될 장비에 스톰이 데이터를 보관할 디렉토리를 생성한다. 이 글에서는 /data1/storm 디렉토리를 사용한다고 가정한다.
3. 스톰 설정 파일 작성
각 장비의 [스톰설치경로]/conf/conf/storm.yaml 파일을 수정한다.
storm.zookeeper.servers:
- "zk1"
nimbus.host: "storm-nim"
storm.local.dir: "/data1/storm"
ui.port: 8087
주키퍼 포트를 변경해야 한다거나, 디폴트 설정 값 등의 정보가 궁금하다면 https://github.com/nathanmarz/storm/blob/master/conf/defaults.yaml 를 참고하면 된다.
4. 스톰 클러스터 데몬 실행
storm-nim 장비에서 스톰 님버스 데몬을 실행한다. Ctrl+C 키를 누르면 데몬이 중지된다.
$ cd [스톰설치디렉토리]/bin
$ ./storm nimbus
Running: java -server -Dstorm.options= .......생략
storm-sup1 ~ storm-sup3 장비에서 동일한 방식으로 스톰 수퍼바이저 데몬을 실행한다. 마찬가지로 Ctrl+C 키를 누르면 중지된다.
$ cd [스톰설치디렉토리]/bin
$ ./storm supervisor
Running: java -server -Dstorm.options= .......생략
님버스 데몬을 실행 중인 장비에서 스톰 UI 웹 서버를 실행할 수 있다. 다음은 스톰 UI 데몬 실행 명령어이다.
$ ./storm ui
앞서 설정 파일에서 "ui.port"의 값을 8087로 주었는데, http://nimbus호스트:8087 로 연결해보면 다음과 비슷한 화면이 출력되는 것을 확인할 수 있다.
최초 환경 테스트를 수행할 때에는 위와 같이 스톰 데몬을 수동으로 띄우지만, 실제 환경에서는 supervisord나 daemontools, monit과 같은 툴을 이용해서 프로세스가 죽을 경우 자동으로 뜨도록 해 놓는다.
5. 간단한 명령어로 확인
아래 명령어로 클러스터에 등록된 토폴로지를 확인할 수 있다.
$ storm list
...생략
No topologies running.
설치가 완료되었다.