先整体介绍1下搭建storm集群的步骤:
- 设置zookeeper集群
- 安装依赖到所有nimbus和worker节点
- 下载并解压storm发布版本到所有nimbus和worker节点
- 配置storm.yaml
- 启动相干后台进程
1 首先配置zookeeper集群
我们知道storm通过zookeeper来调和全部集群。zookeeper不是用来做消息传递,因此storm不会给zookeeper带来很大的压力。单节点的zookeeper在大多情形下是可以胜任的,但是如果你想得到更好的可靠性或部署大集群的话,你可能就需要1个大的zookeeper集群。关于zookeeper的部署在这里就不多做介绍,具体请参考:here。
关于zookeeper的部署这里再补充两点:
- 把zookeeper运行在1个监督进程之下是非常关键的,由于zookeeper是1个fail-fast的进程,当它遇到任何毛病的时候都会自动退出,具体请参考: here
- 定时的去紧缩和转移zookeeper数据也是非常关键的,由于zookeeper不具有紧缩和清楚数据机制,如果我们不设置1个cron管理这些数据,zookeeper产生的数据会很快的占满磁盘,具体请参考: here
ps:如果zookeeper启动失败,查看1下它bin目录下的zookeeper.out文件,配置1下它的myid试试。
2 安装依赖到nimbus和worker节点
storm需要依赖的是:
需要注意,storm对大多数版本的依赖都做了测试,但是storm其实不保证对任何版本的依赖都能正常工作。
3 下载解压storm发布版本到nimbus和worker节点
下1步就是下载解压storm紧缩文件到每台机器,storm发布版本可以从这里下载from
here。
4 配置storm.yaml文件
storm里面有1个文件conf/storm.yaml,它就是storm的配置文件。关于这个文件的所有默许值可以从这里得到here。storm.yaml中的配置会覆盖掉default.yaml中的配置。下面配置1个集群必须修改的配置:
1) storm.zookeeper.servers:配置zookeeper集群的列表
storm.zookeeper.servers:
- "111.222.333.444"
- "555.666.777.888"
如果你的zookeeper集群使用的端口不是默许端口,那末你还得配置storm.zookeeper.port。
2) storm.local.dir :storm的nimbus和work进程需要1个目录来寄存1小部份状态数据,比如jars、confs等等。我们需要在每台机器上创建这个目录并且赋予其相应的权限。
storm.local.dir: "/mnt/storm"
3) nimbus.host:worker节点需要知道哪一个机器是master节点,以便自己从maser节点下载jars和confs。
nimbus.host: "111.222.333.44"
4) supervisor.slots.ports:对每台worker机器,它决定了这台机器1共可以运行多少个worker进程。每一个worker进程会独占1个端口来接收消息,这个参数就是配置了哪些端口会分配给worker进程。如果你在这配置了5个端口,那末storm将能分配5个worker进程给这台机器,如果配置3个端口,那末storm也只能分配3个worker进程。storm默许分配4个worker进程到6700,6701,6702,6703端口。比如:
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
5 通过storm命令运行storm相干的守护进程
最后1步就是启动所有storm相干守护进程。固然,把这些进程都纳入到监督进程管理之下是很有必要的。storm也是1个fail-fast系统,这就意味着这些进程1但遇到异常就会终止。storm之所以会这么设计,是为了它可以在任什么时候候安全的终止和在进程重启的时候恢复。这就是storm为不在进程中保存相干状态的缘由,如果nimbus或supervisor节点重启,运行着的topoloies不会遭到任何影响。下面就是启动storm相干进程的命令:
- Nimbus:在master节点运行“bin/storm nimbus”
- Supervisor:在每台worker节点运行“bin/storm supervisor”,supervisor进程负责在worker节点上启动和停止相应的worker进程
- UI:运行“bin/storm ui” ,1个通过页面管理和展现storm集群运行状态的工具,可以通过“http://nimbus host:8080”来访问。
我们可以看到启动storm服务进程相当简单直接,storm产生的log会保存在各台机器的storm/logs目录中,storm通过logback管理它的日志,我们可以通过修改其logback.xml文件来改变其log的目录及内容。