Storm集群依赖Zookeeper, 所以先搭建zookeeper集群, zookeeper集群搭建: http://www.cnblogs.com/CoolJayson/p/7764531.html
以下开始搭建Storm集群:
1.将apache-storm-0.9.3.tar.gz拷贝到/usr/local/src/目录下, 并解压
2.进入到./conf/目录下, 修改storm.yaml文件, 增加如下配置:
其中storm.zookeeper.servers配置了zookeeper集群; nimbus.host配置了主节点(master node), supervisor.slots.ports配置了从节点(woker node)的端口号.
3.将apache-storm-0.9.3文件拷贝到每个从节点.
4.先启动zookeeper集群(要在每个节点都将zookeeper启动, 如何启动见zookeeper集群搭建)
5.在master节点写脚本将storm集群启动(否则要在每个节点分别启动storm)
启动storm集群脚本: start-storm.sh
1 #!/bin/bash 2 3 #脚本使用默认是集群配置好免密码登录 4 #让你配置的环境生效,我的是~/.bashrc 根据个人配置有的是/etc/profile 5 source ~/.bashrc 6 #storm的安装路径 7 STORM_HOME=/usr/local/src/apache-storm-0.9.3 8 9 #先在主节点上启动nimbus和ui进程 10 echo "start nimbus, ui and logviewer in master" 11 $STORM_HOME/bin/storm nimbus > /dev/null 2>&1 & 12 $STORM_HOME/bin/storm ui > /dev/null 2>&1 & 13 $STORM_HOME/bin/storm logviewer > /dev/null 2>&1 & 14 15 #在从节点上启动logviewer和supervisor 16 # 注意在storm安装路径conf文件夹下默认是没有supervisors这个文件 ,这里是为了便于管理自己创建(名字自己定义) 17 # 在supervisors文件里放的是 supervisor的hostname 有几个supervisor节点 就写几个 一个主机名占一行 18 19 #把supervisors文件里的主机名赋值给SUPERSIORS 20 SUPERVISORS=$(cat $STORM_HOME/conf/supervisors) 21 22 # 循环遍历SUPERVISORS 23 for supervisor in $SUPERVISORS 24 do 25 echo "start supervisor and logviewer in $supervisor" 26 #先ssh 登录到supervisor节点 然后让配置的环境生效,在执行需要启动的进程 nohup 是后台运行 >/dev/null 2>&1 &
27 ssh $supervisor "source ~/.bashrc && nohup $STORM_HOME/bin/storm supervisor > /dev/null 2>&1 &" > /dev/null 2>&1 & 28 ssh $supervisor "source ~/.bashrc && nohup $STORM_HOME/bin/storm logviewer > /dev/null 2>&1 &" > /dev/null 2>&1 & 29 done
关闭storm集群脚本: stop-storm.sh
1 #!/bin/bash 2 3 source ~/.bashrc 4 # storm 安装路径 5 STORM_HOME=/usr/local/src/apache-storm-0.9.3 6 7 #先在主节点上停止nimbus,ui和logviewer进程 8 echo "stop nimbus and logviewer in master" 9 # 注意最外面的引号是反引号 10 kill -9 `ps -ef | grep daemon.nimbus | awk '{print $2}' | head -n 1` 11 kill -9 `ps -ef | grep ui.core | awk '{print $2}' | head -n 1` 12 kill -9 `ps -ef | grep daemon.logviewer | awk '{print $2}' | head -n 1` 13 14 #在从节点上停止logviewer和supervisor 15 SUPERVISORS=$(cat $STORM_HOME/conf/supervisors) 16 for supervisor in $SUPERVISORS 17 do 18 echo "stop supervisor and logviewer in $supervisor" 19 ssh $supervisor kill -9 `ssh $supervisor ps -ef | grep daemon.supervisor | awk '{print $2}' | head -n 1` 20 ssh $supervisor kill -9 `ssh $supervisor ps -ef | grep daemon.logviewer | awk '{print $2}' | head -n 1` 21 done
conf目录下supervisors内容:
6.启动后每个节点的进程如下:
7.在浏览器打开Storm UI地址: http://master:8080/index.html, 可以看到storm集群的信息
//==========正式内容结束, 以下为补充内容================
如果分别在主节点和从节点开启和关闭脚本的话, 脚本内容如下: