分享

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

hyj 发表于 2014-6-11 16:44:55 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 3 16402

问题导读:
1.对于storm0.9.0.1,配置文件需要做哪些修改?
2.如何启动storm?
3.storm0.9.0.1和storm0.8.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目录

  1. gzip –d storm0.9.0.1.tar.gz
  2. tar -xvf storm0.9.0.1.tar
复制代码

配置storm的配置文件。
参考《centos6.4 下storm-0.8.1 安装记录》博文中storm0.8.1中的配置文件,storm0.8.1的配置文件如下所示
  1. ########### These MUST be filled in for a storm configuration
  2. storm.zookeeper.servers:
  3.      - "namenode.hadoop2"
  4. #     - "server2"
  5. storm.local.dir: "/home/storm/stormlocale2"
  6. nimbus.host: "namenode.hadoop2"
  7. #
  8. #
  9. # ##### These may optionally be filled in:
  10. #
  11. ## List of custom serializations
  12. # topology.kryo.register:
  13. #     - org.mycompany.MyType
  14. #     - org.mycompany.MyType2: org.mycompany.MyType2Serializer
  15. #
  16. ## List of custom kryo decorators
  17. # topology.kryo.decorators:
  18. #     - org.mycompany.MyDecorator
  19. #
  20. ## Locations of the drpc servers
  21. # drpc.servers:
  22. #     - "server1"
  23. #     - "server2"
复制代码
针对storm0.9.0.1,需要增加如下的配置
  1. storm.messaging.transport: "backtype.storm.messaging.netty.Context"
  2. storm.messaging.netty.server_worker_threads: 1
  3. storm.messaging.netty.client_worker_threads: 1
  4. storm.messaging.netty.buffer_size: 5242880
  5. storm.messaging.netty.max_retries: 100
  6. storm.messaging.netty.max_wait_ms: 1000
  7. storm.messaging.netty.min_wait_ms: 100
复制代码
这主要是为了将storm的消息传送机制更改为netty。同时为了避免和原版本的冲突,将storm.local.dir的配置值更改为/home/storm/stormlocale2。同时在/home/storm目录下执行如下命令
  1. mkdir stormlocale2
复制代码
建立storm临时文件存储路径


第三步更改path环境变量
将执行storm0.8.1安装目录的bin目录的path更改为执行storm0.9.0.1的bin目录下,我是修改用户home目录的.bash_profile如下

  1. PATH=/home/storm/storm-0.9.0.1/bin:$PATH:$HOME/bin
  2. export PATH
复制代码


第四步,同步文件
将storm0.9.0.1目录、临时存储目录和用户profile文件同步到supervisor机器上,执行如下命令
  1. #同步storm安装目录
  2. scp -r ~/storm-0.9.0.1 datanode1.hadoop2:~/
  3. scp -r ~/storm-0.9.0.1 datanode2.hadoop2:~/
  4. scp -r ~/storm-0.9.0.1 datanode3.hadoop2:~/
  5. scp -r ~/storm-0.9.0.1 datanode4.hadoop2:~/
  6. #同步临时存储路径
  7. scp -r ~/stormlocale2 datanode1.hadoop2:~/
  8. scp -r ~/stormlocale2 datanode2.hadoop2:~/
  9. scp -r ~/stormlocale2 datanode3.hadoop2:~/
  10. scp -r ~/stormlocale2 datanode4.hadoop2:~/
  11. #同步用户profile文件
  12. scp  ~/.bash_profile datanode1.hadoop2:~/
  13. scp  ~/.bash_profile datanode2.hadoop2:~/
  14. scp  ~/.bash_profile datanode3.hadoop2:~/
  15. scp  ~/.bash_profile datanode4.hadoop2:~/
复制代码

因为前文中免密码ssh登陆已经设置好了,所以这里命令能够执行成功。
对于这里如果真正生产,可以参考
服务器批量执行工具 PSSH


集群批量配置多(台PC机)节点的ssh无密码互通


第五步启动storm
在nimbus机器(namenode.hadoop2)上执行如下命令

  1. #启动storm nimbus进程
  2. nohup storm nimbus &
  3. #启动storm ui监控界面进程
  4. nohup storm ui &
复制代码
在supervisor机器(datanode1.hadoop2、datanode2.hadoop2、datanode3.hadoop2、datanode4.hadoop2)执行如下命令
  1. #启动storm supervisor进程
  2. nohup storm supervisor &
  3. #启动storm 日志监控进程。启动该进程,可以在storm ui界面上看各个supervisor节点上日志
  4. 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界面,发现多了这样的内容
1.jpg


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

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

3.jpg


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


默认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的版本了。





http://blog.csdn.net/ygc/article/details/18517573

已有(3)人评论

跳转到指定楼层
jorney2014 发表于 2014-7-17 16:58:35
顶一个,写的不错
回复

使用道具 举报

lbwahoo 发表于 2014-7-17 21:13:00

顶一个,写的不错
回复

使用道具 举报

lbwahoo 发表于 2014-7-17 21:19:37
顶一个,写的不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条