在前面的一篇中讲述了《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界面,发现多了这样的内容
可以看到,多了activate、deactivate、rebalance、kill的命令,这些操作以前都必须通过storm的命令行工具来操作。但是rebalance选项我没有发现正确的用法,因为点击后,只接受一个integer参数,应该是值得执行rebalance等待的时间的秒数,但是不能指定topology的worker的数量和各个计算组件的executor的数量。不知道是bug还是有其他的使用方式。有人知道的话请告知一下。
支持查看nimbus和topology的配置值,如下所示
支持UI上查看各个work的日志。
原来要查看topology的某个计算组件的日志,需要在UI上找到该计算组件对应的work所在的supervisor节点work的端口号,然后登陆到这个supervisor节点上,在去通过tail -f work-[port].log的方式去查看,现在直接在UI上点击该计算节点对应的work名称就可以了。这个是另一个重大的改变。方便了不少
默认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的版本了。