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
题图:Jini团队,2000~2003年。很多作品,如:大工97届《驿路风华》毕业光盘。