1. Ubuntu下Storm单机版安装
安装Storm还需要提前安装Python,Zookeeper,ZeroMQ,jzmq,然后才是Storm的安装和配置:
1.1 安装Python
一般Linux系统都会自带Python,如果没有可以按照以下步骤安装:
wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
tar zxf Python-2.7.2.tgz
cd Python-2.7.2
./configure
make
make install
在/etc/ld.so.conf后追加/usr/local/lib/
sudo ldconfig
1.2 安装Zookeeper
从人人的Apache镜像处下载Zookeeper
wget http://labs.renren.com/apache-mirror/zookeeper/stable/zookeeper-3.4.4.tar.gz
tar zxf zookeeper-3.4.4.tar.gz
在/etc/profile或者~/.bashrc追加:
export ZOOKEEPER_HOME=path/to/zookeeper.3.4.4
export PATH=$PATH:$ZOOKEEPER/bin
1.3 安装ZeroMQ
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
./configure
//在configure时可能会报缺包,安装即可:sudo apt-get install g++ uuid-dev
make
sudo make install
sudo ldconfig
1.4 安装jzmq
git clone git://github.com/nathanmarz/jzmq.git
//如果没有git,安装即可:sudo apt-get install git
./autogen.sh
//可能会报缺包,安装即可: sudo apt-get install libtool auto-make
./configure
//可能需要设置JAVA_HOME,export JAVA_HOME=path/to/java
make
sudo make install
1.5 安装配置Storm
wget https://github.com/nathanmarz/storm/downloads/storm-0.7.1.zip
unzip storm-0.7.1.zip
//没有unzip工具的话下载:sudo apt-get install unzip
在/etc/profile追加
export STORM_HOME=/path/to/Storm
export PATH=$PATH:$STORM_HOME/bin
1.6 测试
Storm安装后可以进行简单的测试,测试用到的工程可以从github得到:
git clone git://github.com/nathanmarz/storm-starter
需要将这个工程编译成一个jar包,编译过程见[2],我也有编译好的jar包,请致信kemaswill@163.com索取。
测试:storm jar StormStarter.jar storm.starter.ExclamationTopology
2 分布式Storm安装
Storm集群包含一个中心节点Nimbus,多个从节点Supervisor。
2.1 Zookeeper集群搭建
首先我们需要搭建一个Zookeeper集群,搭建过程见[3]。
2.2 安装依赖软件及Storm
我们在Storm的每个节点上安装Python,ZeroMQ,jzmq,Storm。
2.3 配置Storm集群
配置每个节点的Storm(根据前人[1]经验,每行要以空格开始,冒号后要有空格!):
配置conf/storm.yaml文件:
nimbus.host: "nimbus"
storm.local.dir: "path/to/local/dir"
storm.zookeeper.servers:
- "zookeeper1"
- "zookeeper2"
- "zookeeper3"
storm.zookeeper.port: 2181
其中nimbus.host为Nimbus节点的主机名或IP地址。
storm.local.dir为存储相关信息比如jar,topology等的目录。
storm.zookeeper.servers为zookeeper集群的主机名或IP地址。
storm.zookeeper.port为Zookeeper服务的端口号,要和你的Zookeeper服务的端口号一致(2181是默认的)。
以上配置需要在每个节点,包括Nimbus和Supervisor上配置,且前三项是必须的,第二项如果不设置会报Connection Refused错误。
在Nimbus节点上的~/.storm/storm.yaml配置(没有该文件的话创建之):
nimbus.host: "nimbus"
到这里Storm集群就配置完毕了。
2.4 启动Storm集群
在Nimbus节点上启动Nimbus服务:
bin/storm nimbus &
加&是为了在后台运行,否则当前的终端就不能再输入命令了
在Nimbus节点上启动UI,这样就可以通过浏览器在http://nimbus-host:8080上观察整个Storm集群以及Topology的运行情况
bin/storm ui &
在Supervisor节点上启动Supervisor:
bin/storm supervisor &
这样整个Storm集群便启动了。
2.5 Storm集群测试
Storm集群的测试依然可以使用我们之前用过的StormStarter.jar,在Nimbus节点上执行:
storm jar StormStarter.jar storm.starter.ExclamationTopology exclamation
注意,与单机版Storm不同的是,我们在主类ExclamationTopology后面加了一个字符串 exclamation,该字符串是任意的,用来在集群中标示这个Topology,如果不填加这个字符串则该Topology会在单机环境下运行。
参考文献:
[1] Twitter Storm安装实战 主要参考该博文,但是其中的一些网址可能会找不到,在本文中更新。
[2] 编译StormStarter 该博文的二 2)部分有详细介绍
[3] Zookeeper集群安装配置