本文同步于个人Github博客:https://github.com/johnnian/Blog/issues/22,欢迎留言。
Storm版本:1.1.0
在搭建Storm集群前,先看下下面的拓扑图,在1.1.0版本中,支持 Nimbus的HA模式,Nimbus、Supervisor,需要使用Zookeeper作为协同。
一、相关依赖
- Zookeeper(可以使用 3.4.10 版本)
- JDK7+
- Python 2.6.6+
注意,如果是在MacOS系统下,则还需要安装 ZeroMQ,否则启动Storm UI的时候,会报错:
可以使用 HomeBrew快速安装:
➜ ~ brew install zeromq
二、安装包下载
进入下载页面下载, 或者直接点击这里
或者直接wget:
➜ ~ wget http://apache.claz.org/storm/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz
➜ ~ tar -zxvf apache-storm-1.1.0.tar.gz
拷贝安装包到每个节点,目前各个节点的信息如下:
简称 | IP | 角色 |
---|---|---|
A | 172.18.0.30 | Nimbus_1 |
B | 172.18.0.33 | Supervisor_1 |
C | 172.18.0.34 | Supervisor_1 |
注意:
- 在安装配置Storm集群之前,需要先启动Zookeeper(单点或者集群)。
- 默认的配置文件,可以参考Storm Github上的内容,点击这里前往查看
三、Nimbus安装配置
Nimbus可以配置多台,实现HA,这里暂时就配置一台
需要对外开放的端口:
- 6627: Nimbus 默认端口
- 3772: DRPC 默认端口
- 8080: Storm UI Web端口
1、配置文件
建议: Nimbus、DRPC的端口直接用默认的,无需更改
➜ ~ vi apache-storm-1.1.0/conf/storm.yaml
#配置Zookeeper
storm.zookeeper.servers:
- "172.18.0.21"
storm.zookeeper.port: 2181
storm.zookeeper.root: "/storm"
#配置数据存储路径
storm.local.dir: "/root/apache-storm-1.1.0/data"
#配置节点健康检测
storm.health.check.dir: "healthchecks"
storm.health.check.timeout.ms: 5000
#配置Nimbus节点,如果有多个,可以填写,用逗号隔开
nimbus.seeds: ["172.18.0.30"]
#配置Storm UI
ui.port: 8080
## 配置DRPC服务
drpc.servers:
- "172.18.0.30"
2、启动程序
➜ ~ ./apache-storm-1.1.0/bin/storm nimbus &
➜ ~ ./apache-storm-1.1.0/bin/storm ui &
➜ ~ ./apache-storm-1.1.0/bin/storm drpc &
在浏览器访问:http://172.18.0.30:8888
, 查看Storm UI主页
四、Supervisor安装配置
Supervisor安装的时候,只需要指定Nimbus地址,就可以自动加入Storm集群,非常容易扩容。
1、配置文件
➜ ~ vi apache-storm-1.1.0/conf/storm.yaml
#配置Zookeeper
storm.zookeeper.servers:
- "172.18.0.21"
storm.zookeeper.port: 2181
storm.zookeeper.root: "/storm"
#配置数据存储路径
storm.local.dir: "/root/apache-storm-1.1.0/data"
#配置节点健康检测
storm.health.check.dir: "healthchecks"
storm.health.check.timeout.ms: 5000
#配置Nimbus节点,如果有多个,可以填写,用逗号隔开
nimbus.seeds: ["172.18.0.30"]
#配置supervisor: 开启几个端口插槽,就开启几个对应的worker进程
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
2、启动程序
➜ ~ ./apache-storm-1.1.0/bin/storm supervisor &
四、问题
1、Storm UI 中显示的Supervisor 的个数与实际的不符:
我搭建了两个 Supervisor 节点,启动没有报错,但是Storm UI中显示的却是:
解决方法:
删除Supervisor中的 storm.local.dir
目录的数据,之前拷贝到各个节点的时候,把这个目录页拷贝过去了。如果 storm.local.dir
的目录为空的话,每个Supervisor就会创建自己的ID
参考:storm ui显示supervisor个数与实际不符的解决
附录:参考
- Setting up a Storm Cluster
- Installing native dependencies
- How to set up Apache Storm on mac using brew