全部博文(51)
分类: 架构设计与优化
2016-08-31 09:51:33
一、使用步骤
1.在storm目录创建sbin目录
2.把脚本部署到sbin目录下
3.scp目录到每个子节点
为提高效率,操作前最好打通nimbus节点与每个supervisor节点的ssh,ssh无密码添加key可参考。
4.修改脚本中的用户自定义变量STORM_DIR
例如:STORM_DIR=/opt/apps_install/apache-storm-0.9.5
5.修改脚本中的用户自定义变量STORM_LOCAL_DIR
此变量要和conf/ storm.yaml文件中storm.local.dir值保持一致,为防止storm历史数据造成重启supervisor失败,使用脚本重启之后,脚本会自动把该目录备份到sbin目录下。
6.创建子节点ip列表slave(文件名字随便)
例如:
7.执行
在nimbus节点执行:sh start-storm.sh slave
8.日志
执行后会在每个节点的storm_dir/sbin目录下生成日志文件log,在nimbus的节点上会打印的日志是这样的:
在supervisor的节点上打印的日志是这样的:
二、扩展
1.略加删减,变为stop集群脚本
把脚本中的start调用注释便可以得到stop storm的脚本,部署一下脚本即可实现整个集群的storm关闭。
2.加参数与不加参数
加ip列表文件执行将会启动/关闭整个集群(此功能必须在nimbus节点执行);不加ip列表文件执行,则只是启动/关闭本节点的supervisor服务。
三、技术要点
1.ssh在while和for循环中使用的区别,以及注意事项
关于这方面的知识,可参考《如何在while和for中使用ssh》或者。
2.循环中ssh后边的&符加与不加的区别
不加&符串行执行,在虚拟机中100%出错,在物理机中没有测试,不过效果不会好到哪去;加上&符,多线程并行执行,效率高。
3.supervisor节点start时的mv操作
mv操作不是必须的,但有时会因为supervisor的历史的topology数据而重启失败,特别是在版本v0.9.5之前。
四、启动supervisor
1.kill掉worker进程
kill `ps aux | fgrep storm | fgrep -v 'fgrep' | awk '{print$2}' `
2.删除storm.local.dir中的目录
将storm.yaml中配置的storm.local.dir目录中的supervisor和workers两个目录删除掉。
对于我们这两个storm集群,storm.local.dir的目录均为$STORM_HOME/localdir
3.启动supervisor
a)KeyStorm
nohup /opt/storm-0.9.3/bin/storm supervisor > /dev/null 2>&1 &
nohup /opt/storm-0.9.3/bin/storm logviewer > /dev/null 2>&1 &
b)Storm
nohup /opt/apps_install/storm-0.9.2-new/bin/storm supervisor > /dev/null 2>&1 &
nohup /opt/apps_install/storm-0.9.2-new/bin/storm logviewer > /dev/null 2>&1 &
c)测试Storm
nohup /opt/apps_install/apache-storm-0.9.5/bin/storm supervisor > /dev/null 2>&1 &
nohup /opt/apps_install/apache-storm-0.9.5/bin/storm logviewer > /dev/null 2>&1 &
4.rebalance topology
可以直接通过storm UI进行rebalance,也可以通过storm rebalance TopologyName进行均衡负载。