最近自己尝试搭建了一下Twitter Storm的集群,参考了很多网友的博客,特别是徐明明的;这里只对自己搭建时的过程和所遇到的问题做一个小总结,方便查阅。
Storm是Twitter开源的一个实时计算框架,它需要依赖Zookeeper,ZeroMQ;同时还需要你的系统环境中有Java和Python。所以整个搭建步骤如下:
- 搭建Zookeeper集群。
- 在控制节点机[ Nimbus ]和工作节点机[ Supervisor ]上安装相同的环境(ZeroMQ,JZMQ,Java,Python等)
- 在控制节点机[ Nimbus ]和工作节点机[ Supervisor ]上安装Storm框架
- 配置Storm,通过storm.yaml文件
- 用命令启动Storm(需要分别启动Nimbus、Supervisor、ui)
Zookeeper集群搭建
由于系统环境中已经有同事搭建好了Zookeeper的集群,所以我没自己手动实现过,就不做介绍了,直接给出 贱客的一篇博客http://www.oschina.net/question/54100_10242
依赖环境的部署
这节主要介绍ZeroMQ,JZMQ的部署(Java和Python的安装就不总结了,网上很多)
首先是ZeroMQ:Storm所需的版本是 ZeroMQ 2.1.7,你可以通过执行如下命令安装:
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
tar -xzf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install
在这各环节,我出现过一次安装失败,以是因为 ./configure会检查它所依赖的软件,系统中缺少uuid,后来安装了,就通过了。 (命令:sudo apt-get install uuid-dev)
接下来是JZMQ,它是Java绑定的ZeroMQ,再安装之前请保证Java已经安装好了,可以通过执行如下命令安装JZMQ
git clone https://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
sudo make install
这个过程中,我遇到
autoconf 安装不全,通过命令(apt-get install autoreconf*)升级后以就通过了,同时./configure时会检查你的JAVA_HOME是否正确,不正确会报错,并提示。
Storm的安装
从这里 下载Storm的包,并解压到你需要安装的目录下即可。
Storm的配置
配置主要是通过storm.yaml文件,对系统中各个组件做说明;以下是Storm中必须有的配置及说明:
1. storm.zookeeper.servers :指定Storm系统所使用的Zookeeper的地址
storm.zookeeper.servers:
- "111.222.333.444"
- "555.666.777.888"
2. storm.local.dir :Storm 的一些配置文件或架包,或日志存放的地方,注意这个目录下,你一定要保证你有权限生成文件,否则会报错,配置如下:
storm.local.dir: "/mnt/storm"
3. java.library.path :这是storm所依赖的本地依赖(ZeroMQ和JZMQ)的加载地址, 默认的是:/usr/local/lib:/opt/local/lib:/usr/lib, 大多情况下是对的,所以你应该不用更改这个配置。
4. nimbus.host:是控制节点的指定,所有工作机都需要知道谁是控制节点,才能从它那拿Jar包
nimbus.host: "111.222.333.44"
5.
supervisor.slots.ports
: 在工作机上,运行每一个进程,都需要有自己的独立的端口来接受信息,所以这里,你配置了几个端口,就表明你工作机上最多可以有多少个进程。默认是4个,端口可以自己改
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
最后 如果你还需要了解其他的配置信息可以看
这里 ,同时建议你把
ui.port:也配置下,也许你服务器的8080端口已经配占用,你需要启动ui来查看Storm运行状态
ui.port: 8080
启动Storm
通过执行如下命令分别启动Nimbus、Supervisor、ui
storm nimbus
storm supervisor
storm ui
完成后,你可以通过 “主机ip : 端口号" 来查看Storm运行状态(若你执行了storm ui命令,端口号为 你配置文件 ui.port的值,默认8080)
最后如果程序出错,在你storm的解压目录下的logs里, 分别会生成nimbus、supervisor、ui目录,里面有各种的日志文件,用于记录异常信息,你可以查阅。
参考资料:
Installing native dependencies
https://github.com/nathanmarz/storm/blob/master/conf/defaults.yaml
来源:oschina
链接:https://my.oschina.net/u/100580/blog/84165