②话不说▼ 2012▼ 手册 集群 storm zeromq

004.TwitterStorm集群

Twitter Storm集群(storm-0.7.1),
包括ZeroMQ,jzmq,strom的安装,配置,启动,停止。

@史荣久 / 2012-06-20 / CC-BY-SA-3.0

1. 依赖文档

制作虚拟机(virtualbox 4.1.2)
Zookeeper集群(Zookeeper 3.3.5)
安装Storm集群

2. 安装ZeroMQ

下载 ZeroMQ 2.1.7(当前最新版是 2.2.0 stable),但仍遵循手册建议。

手册上的步骤。

wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz
tar -xzf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install

宿主机的步骤

sudo apt-get install build-essential
sudo apt-get install uuid-dev

先安装依赖,然后一切正常.

虚拟机的步骤

yum install pkgconfig
yum install libtool
yum install gcc-c++
yum install libuuid-devel
yum install uuid-devel
yum install make

先安装依赖,然后一切正常.

3. 安装jzmq

手册上的步骤

git clone https://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
sudo make install

宿主机的步骤

sudo apt-get install libtool autoconf automake

make错误:

make[1]: *** No rule to make target classdist_noinst.stamp,
needed by org/zeromq/ZMQ.class.  Stop.

解决方法:
手动创建个空文件.

touch src/classdist_noinst.stamp

make错误:

error: cannot access org.zeromq.ZMQ
class file for org.zeromq.ZMQ not found
javadoc: error - Class org.zeromq.ZMQ not found.

解决方法:
手动编译java,然后重新make即可通过.

cd src
javac -d . org/zeromq/*.java
cd ..

虚拟机的步骤 一切正常.

4. 配置Storm

mkdir -p /usr/local/storm-data
cp conf/storm.yaml conf/storm.yaml.orig
cat>conf/storm.yaml<<EOF
storm.zookeeper.servers:
    - "vbox01"
    - "vbox02"
    - "vbox03"
storm.local.dir: "/usr/local/storm-data"
nimbus.host: "vbox01"
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703
EOF

5. 启动Storm

在全部虚拟机上启动

zkServer.sh start

在 nimbus(vbox01)上执行

nohup storm nimbus &
nohup storm ui &

在 supervisor(vbox02,vbox03)上执行

nohup storm supervisor &

在宿主机器上访问
http://vbox01:8080/

6. 停止Storm

Storm设计得太fail-fast和stateless,以至于没有提供停止命令.

Nathan Marz 在google group里说:

Storm just provides the commands to 
launch the nimbus/supervisor process,
you should use whatever daemonization 
system you're comfortable with around that. 
We use daemontools. 

优雅的停止,先停Topology,

bin/storm kill xxx

然后kill掉storm进程.
$JAVA_HOME/bin/jps

可以看到 nimbus和supervisor的pid.
如果启动ui的话,还有个core也要kill

或者通过ps -ef |grep storm获得 pid,

注意,有python storm进程会随java一起被kill,可以不用单独kill

《004.TwitterStorm集群》 Twitter Storm集群(storm-0.7.1),包括ZeroMQ,jzmq,strom的安装,配置,启动,停止。
题图:Jini团队,2000~2003年。很多作品,如:大工97届《驿路风华》毕业光盘。