1 先安装zookeeper集群, 安装过程见Zookeeper 简介 搭建
2 三台机器,master作为主节点,sliver103,sliver104作为从节点
3 安装:
// 解压重命名
[root@master local]# tar -zxvf apache-storm-0.9.2-incubating.tar.gz
[root@master local]# mv apache-storm-0.9.2-incubating storm
// 修改配置文件:
[root@master conf]# vi storm.yaml
storm.zookeeper.servers: // storm对应zookeeper集群的机器名
- "master"
- "sliver103"
- "sliver104"
nimbus.host: "master" // 指定strom的主机名
storm.local.dir: "/usr/local/storm/tmp" //该参数指定客户端提交上来的代码 Jar放到机器哪个本地路径下
supervisor.slots.ports: // 指定storm通讯端口
- 6701
- 6702
- 6703
- 6704
#ui.port: 8081 指定storm ui界面访问端口 默认是8080
配置此文件时注意细节如下:
1) 使用两个空格作为一级缩进是 YAML 的约定,不能使用制表符(Tab)来代替
eg: storm.zookeeper.servers:和前面就有两个空格
2) 以“:”为结束符的字符串,代表了一个键名,“:”后面则是键值。“:”和键值之间必须有至少一个空格。
eg: nimbus.host: "master" :右侧间隔了一个空格
3) 列表的元素前面的“-”必不可少,并且要跟随至少一个空格
eg: - 6701 间隔了一个空格
// 拷贝到别的节点:
[root@master local]# scp -r storm sliver103:/usr/local/
[root@master local]# scp -r storm sliver104:/usr/local/
// 启动 storm nimbus >/dev/null 2>&1(控制台用2表示输出转到前面垃圾箱里 并转到后台执行用&表示
注意,单节点无法同时启动nimbus和supervisor
参数storm.cluster.mode distributed 默认是分布式模式
创建 ${STORM_HOME}/logs 目录, 启动的时候将日志重定向到创建的目录下
[root@master bin]# storm nimbus >/dev/null 2>&1 &
或者这种方式启动,保存启动日志
bin/storm nimubs > ./logs/nimbus.out 2>&1 &
bin/storm ui > ./logs/ui.out 2>&1 & -----> 启动后jsp名称为 core
[1] 29774
[root@master bin]# jps
3199 nimbus // 出现主节点进程
9800 JobTracker
3749 Jps
3682 core
13967 QuorumPeerMain
9572 NameNode
9721 SecondaryNameNode
在从节点启动supervisor
[root@sliver103 bin]# storm supervisor >/dev/null 2>&1 &
或者将启动日志保存下来:
bin/storm supervisor > ./logs/supervisor.out 2>&1 &
[root@sliver103 bin]# jps
17065 DataNode
17174 TaskTracker
16343 QuorumPeerMain
21104 Jps
21018 supervisor // 出现从节点进程
[root@sliver104 bin]# storm supervisor >/dev/null 2>&1 &
[1] 32214
[root@sliver104 bin]# jps
2167 supervisor // 出现从节点进程
28596 QuorumPeerMain
20799 TaskTracker
2212 Jps
注:服务启动时,jps下后,有时候会看到 config_value 这表示服务在启动中读取配置参数的过程,还没有启动成功
启动服务后查看启动进程:
jps查看进程命令
或者
$ ps -ef | grep daemon.nimbus daemon ---> 守护进程
$ ps -ef | grep daemon.supervisor
// 启动UI界面,一定要在nimbus节点上启动
[root@master bin]# storm ui >/dev/null 2>&1 &
[1] 30636
启动logviewer 用于查看 supersivor 执行日志:
访问 http://master:8000/端口查看日志
在每个节点都执行此命令:
storm/bin/storm logviewer >/dev/null 2>&1 &
4 访问UI界面查看storm启动结果:
http://master:8080/


5 一些补充:
strom集群规划:一主两从
主节点:192.168.1.171
nimbus:nohup bin/storm nimbus >/dev/null 2>&1 &
ui:nohup bin/storm ui >/dev/null 2>&1 & 建议UI界面在主节点启动 因为从节点需要干活
从节点:192.168.1.172、173
supervisor:nohup bin/storm supervisor >/dev/null 2>&1 &
logviewer:nohup bin/storm logviewer >/dev/null 2>&1 & 需要在所有从节点启动,日志查看进程,防止从节点无权访问下无法看到supervisor.log的日志信息
注意:yaml文件的缩进绝对不能用制表符,需要使用空格实现,建议使用两个空格作为缩进,当然使用多个空格也没关系
strom在集群下运行时,打jar包不需要指定入口类。需要在命令里指定入口类。
打好的jar上次到主节点或者从节点都可以。
停止topology
1:在ui界面,点击进入topology的明细页面,点击kill按钮
2:在命令行做
bin/storm list
bin/storm kill topology_name
1:在ui界面,点击进入topology的明细页面,点击kill按钮
2:在命令行做
bin/storm list
bin/storm kill topology_name
跑Topology测试
需要在nimbus提交任务
使用storm自带的案例
$ bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology wordcount