本文提供最简单快速的安装示例:
Storm依赖zookeeper和Python环境,具体安装步骤不再列出,只简单介绍Storm的安装过程。
1,Linux环境下载storm(版本0.10.0)
wget http://mirrors.cnnic.cn/apache/storm/apache-storm-0.10.0/apache-storm-0.10.0.tar.gz
2,解压
tar -zxvf apache-storm-0.10.0.tar.gz
3,编辑配置文件
vi conf/storm.yaml
//这是一个为Storm集群服务的Zookeeper集群的主机列表,它的配置应该类似于:
storm.zookeeper.servers:
- “zookeeperIp01”
- “zookeeperIp02”
- “zookeeperIp03”
//nimbus 节点
nimbus.host: “nimbusIp”
//supervisor 端口
对于每个工作节点,可以通过该配置项来设置该节点上运行多少个worker。每个worker使用一个端口接收消息,此设置定义为使用哪些端口是打开的。如果在这里定义5个端口,然后Storm将分配5个Worker在这台主机上运行。如果定义3个端口,Storm只会分配3个worker。此设置默认为在端口6700、6701、6702和6703上配置运行4个worker,如下:
supervisor.slots.ports:
-6700
-6701
-6702
-6703
本示例是 nimbus和supervisor节点部署在同一台机器上。
关于storm的属性配置,开头都要保留一个空格,不要用tab键。
此配置文件在各个节点上都是相同的,具体那个服务节点承担什么角色要看节点上启动的服务是什么,如下命令
4,启动服务
bin/storm nimbus >/dev/null 2>&1 &
bin/storm supervisor >/dev/null 2>&1 &
bin/storm ui >/dev/null 2>&1 &
其中 storm ui 启动后,可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。而且storm ui必须和storm nimbus部署在同一台机器上,否则UI无法正常工作。
5,向集群中提交拓扑
可以直接运行storm目录下的实例程序来看一下效果:
bin/storm jar ../examples/storm-starter/storm-starter-topologies-0.10.0.jar storm.starter.WordCountTopology |grep ‘Thread-[0-9]*-count’
打印出的日志就是每个bolt执行后的结果,这是相当于本地运行,实际上并没有想集群中提交拓扑,真正提交集群拓扑是这样的
bin/storm jar ../examples/storm-starter/storm-starter-topologies-0.10.0.jar storm.starter.WordCountTopology word-count
这时会向集群中提交一个名字为 word-count的拓扑,这个拓扑已经提交,就会在后台一直运行,除非手动kill掉这个拓扑,此时,可以查看 log目录下的日志:
tail -f word-count-XX-XXXXXX-worker-XXX.log
此时发现这个拓扑会在后台一直运行进行单词的个数统计。