从storm0.8.1升级到storm0.9.0.1实践

在前面的一篇中讲述了《centos6.4 下storm-0.8.1 安装记录》中,我们描述了如何安装storm0.8.1版本,安装这个版本是因为在https://github.com/nathanmarz/storm中,只能下载到这个版本,经过了各种折腾安装好了以后,发现原来这儿没有最新版本。现在最新的版本是storm0.9.0.1。看了介绍,改进了不少,所以赶紧将版本升级为最新版本。完成后,发现0.9.0.1因为可以不使用zeroMQ,安装过程比0.8.1版本要简单了很多。下面描述一下。升级具体环境见《centos6.4 下storm-0.8.1 安装记录》。


安装步骤

第一步下载storm0.9.0.1.tar.gz

下载到namenode.hadoop2的storm用户的home目录下,下载的地址在这里顺被吐一下槽,这个storm的信息分部在三个地方分别是github,storm-project.org以及apache的孵化项目中,搞得我困惑了好久。基本上文档在github上,下载最新的版本去storm-project.org,目前看,apache网站目前还是打酱油的。

第二部解压storm0.9.9.1.tar.gz

执行如下命令解压文件,形成storm0.9.0.1目录

gzip –d storm0.9.0.1.tar.gz
tar -xvf storm0.9.0.1.tar

第二步,配置storm的配置文件。

参考《centos6.4 下storm-0.8.1 安装记录》博文中storm0.8.1中的配置文件,storm0.8.1的配置文件如下所示

########### These MUST be filled in for a storm configuration
 storm.zookeeper.servers:
     - "namenode.hadoop2"
#     - "server2"
 storm.local.dir: "/home/storm/stormlocale2"
 nimbus.host: "namenode.hadoop2"
#
#
# ##### These may optionally be filled in:
#
## List of custom serializations
# topology.kryo.register:
#     - org.mycompany.MyType
#     - org.mycompany.MyType2: org.mycompany.MyType2Serializer
#
## List of custom kryo decorators
# topology.kryo.decorators:
#     - org.mycompany.MyDecorator
#
## Locations of the drpc servers
# drpc.servers:
#     - "server1"
#     - "server2"

针对storm0.9.0.1,需要增加如下的配置

 storm.messaging.transport: "backtype.storm.messaging.netty.Context"
 storm.messaging.netty.server_worker_threads: 1
 storm.messaging.netty.client_worker_threads: 1
 storm.messaging.netty.buffer_size: 5242880
 storm.messaging.netty.max_retries: 100
 storm.messaging.netty.max_wait_ms: 1000
 storm.messaging.netty.min_wait_ms: 100

这主要是为了将storm的消息传送机制更改为netty。同时为了避免和原版本的冲突,将storm.local.dir的配置值更改为/home/storm/stormlocale2。同时在/home/storm目录下执行如下命令

mkdir stormlocale2
建立storm临时文件存储路径


第三步更改path环境变量

将执行storm0.8.1安装目录的bin目录的path更改为执行storm0.9.0.1的bin目录下,我是修改用户home目录的.bash_profile如下

PATH=/home/storm/storm-0.9.0.1/bin:$PATH:$HOME/bin

export PATH

第四步,同步文件

将storm0.9.0.1目录、临时存储目录和用户profile文件同步到supervisor机器上,执行如下命令

#同步storm安装目录
scp -r ~/storm-0.9.0.1 datanode1.hadoop2:~/
scp -r ~/storm-0.9.0.1 datanode2.hadoop2:~/
scp -r ~/storm-0.9.0.1 datanode3.hadoop2:~/
scp -r ~/storm-0.9.0.1 datanode4.hadoop2:~/
#同步临时存储路径
scp -r ~/stormlocale2 datanode1.hadoop2:~/
scp -r ~/stormlocale2 datanode2.hadoop2:~/
scp -r ~/stormlocale2 datanode3.hadoop2:~/
scp -r ~/stormlocale2 datanode4.hadoop2:~/
#同步用户profile文件
scp  ~/.bash_profile datanode1.hadoop2:~/
scp  ~/.bash_profile datanode2.hadoop2:~/
scp  ~/.bash_profile datanode3.hadoop2:~/
scp  ~/.bash_profile datanode4.hadoop2:~/

因为前文中免密码ssh登陆已经设置好了,所以这里命令能够执行成功。

第五步启动storm

在nimbus机器(namenode.hadoop2)上执行如下命令

#启动storm nimbus进程
nohup storm nimbus &
#启动storm ui监控界面进程
nohup storm ui &

在supervisor机器(datanode1.hadoop2、datanode2.hadoop2、datanode3.hadoop2、datanode4.hadoop2)执行如下命令

#启动storm supervisor进程
nohup storm supervisor &
#启动storm 日志监控进程。启动该进程,可以在storm ui界面上看各个supervisor节点上日志
nohup storm logviewer &

新版本的变化

最后说一下storm0.9.0.1和storm0.8.1相比有下面的变化和改进

消息通知机制变更

消息通知机制支持netty。这是这个版本最大的变化了,因为netty是java开发的,免除了zeroMQ编译,安装的繁琐过程。对比storm0.8.1安装过程可以看到减少了zeroMQ和他的支持库jzmq占据了大量的 篇幅。当然这个版本还可以支持zeroMQ,但是不建议再使用了

UI的变更

支持topology控制命令

在UI上可以支持rebalance了,看UI界面,发现多了这样的内容

从storm0.8.1升级到storm0.9.0.1实践

可以看到,多了activate、deactivate、rebalance、kill的命令,这些操作以前都必须通过storm的命令行工具来操作。但是rebalance选项我没有发现正确的用法,因为点击后,只接受一个integer参数,应该是值得执行rebalance等待的时间的秒数,但是不能指定topology的worker的数量和各个计算组件的executor的数量。不知道是bug还是有其他的使用方式。有人知道的话请告知一下。


支持查看nimbus和topology的配置值,如下所示

从storm0.8.1升级到storm0.9.0.1实践

从storm0.8.1升级到storm0.9.0.1实践


支持UI上查看各个work的日志。

原来要查看topology的某个计算组件的日志,需要在UI上找到该计算组件对应的work所在的supervisor节点work的端口号,然后登陆到这个supervisor节点上,在去通过tail -f work-[port].log的方式去查看,现在直接在UI上点击该计算节点对应的work名称就可以了。这个是另一个重大的改变。方便了不少

从storm0.8.1升级到storm0.9.0.1实践


默认acker配置更改

在以前的版本中,acker的executor的数量和task的数量默认是1个,现在根据你指定的topology的worker的数量来决定。即使你指定的worker数量超出了集群可分配worker的最大数量导致你的worker实际分配数量小于指定的数量,topology的acker分配的executor的数量和task的数量还是按照你指定的数值来分配。当然,你还是可以通过rebalance来重新分配acker的executor的数量。


目前从表面上看能看到这么些变化。这些变化带来的好处完全值得大家升级到storm0.9.0.1或者直接安装storm0.9.0.1 ,不用再考虑0.8的版本了。








从storm0.8.1升级到storm0.9.0.1实践

上一篇:UVA 12538 可持久化treap入门


下一篇:CodeForces 382B 数学推导