storm 集群依赖于zookeeper 集群,所以首先需要安装好zk集群
如果要求不是很高,zookeeper 单节点也可以
1.上传安装包到192.168.1.71 节点
apache-storm-0.9.3.tar.gz
2.解压
# tar zxvf apache-storm-0.9.3.tar.gz
3.修改配置文件
storm里面有一个文件conf/storm.yaml,它就是storm的配置文件。关于这个文件的所有默认值可以从这里得到
https://github.com/apache/storm/blob/master/conf/defaults.yaml
# cd apache-storm-0.9.3/conf
# vi storm.yaml
1.指定zk节点的地址,也可以用主机名
如果zookeeper集群使用的端口不是默认端口,那么还得配置storm.zookeeper.port。
2.指定nimbus 的host,也就是所在的节点
supervisor里面会有多个worker , 一个worker 对应一个slot(槽位)
默认情况下一个supervisor 启动四个worker , 也就是对应四个slot
可以修改配置启动几个worker,怎么如下配置
每一个worker 需要一个端口,所以添加几个端口就是添加几个worker
supervisor.slots.ports:
- 6701
- 6702
- 6703
- 6704
- 6705
- 6706
5. 将storm 包拷贝到其他节点
# scp -r /home/hadoop/apache-storm-0.9.3/hadoop02:/home/hadoop
# scp -r /home/hadoop/apache-storm-0.9.3hadoop03:/home/hadoop
6. 启动storm集群
首先启动zk集群
# ./zkServer.sh start
在nimbus主机上(192.168.1.71)
//启动协调管理nimbus
以下启动如果权限不够使用root 用户操作
# cd /home/hadoop/apache-storm-0.9.3/bin
# ./storm nimbus
或者执行后台启动
# ./storm nimbus1>/dev/null 2>&1 &
在supervisor主机上192.168.1.72、192.168.1.73
# ./stormsupervisor 1>/dev/null 2>&1 &
//启动web管理界面 启动后可以通过nimbus主机名:8080端口进行仿问
192.168.1.71
#./storm ui
或者
# ./storm ui1>/dev/null 2>&1 &
ui 的进程名就叫core
web 管理界面地址
http://192.168.1.71:8080
程序打包 phoneStorm.jar
命令格式:storm jar 【jar路径】 【拓扑包名.拓扑类名】【stormIP地址】【storm端口】【拓扑名称】【参数】
# cd /home/hadoop/apache-storm-0.9.3/bin
# ./storm jar/home/hadoop/phoneStorm.jar com.zch.bigdata.storm.TopologySubmitClient;
#提交phoneStorm.jar到远程集群,并启动TopologySubmitClient拓扑。
观察ui 界面:
注意:topology程序一旦开启运行,就会一直运行,除非出错或者人为停止程序
查看当前运行的topo:
# ./storm list
命令格式:storm kill 【拓扑名称】
样例:
# ./storm kill phoneTopo
在storm.yaml中常用的几个选项
storm.zookeeper.root
Storm在zookeeper集群中的根目录,默认是“/”
topology.workers
每个Topology运行时的worker的默认数目,若在代码中设置,则此选项值被覆盖
storm.zookeeper.servers
zookeeper集群的节点列表
storm.local.dir
Storm用于存储jar包和临时文件的本地存储目录
ui.port
Storm集群的UI地址端口号,默认是8080
nimbus.host:
Nimbus节点的host
supervisor.slots.ports
Supervisor节点的worker占位槽,集群中的所有Topology公用这些槽位数,即使提交时设置了较大数值的槽位数,系统也会按照当前集群中实际剩余的槽位数来进行分配,当所有的槽位数都分配完时,新提交的Topology只能等待,系统会一直监测是否有空余的槽位空出来,如果有,就再次给新提交的Topology分配。