配置storm.yaml
storm发行版在conf/storm.yaml包含了一些配置信息。你可以在这里看到默认配置。storm.yaml里面的配置比default.xml的优先级要高, 下面是要运行storm集群所必须的配置:
1. storm.zookeeper.servers 这个配置storm集群使用的zookeeper集群的地址,比如:
storm.zookeeper.servers:
- "111.222.333.444"
- "555.666.777.888"
2. storm.local.dir Nimbus和Supervisor在本地磁盘上需要一个目录来存储一些状态信息(jar包, 配置文件之类的东西)你应该在每台机器上创建那个目录,分配正确的权限,比如:
storm.local.dir: "/mnt/storm"
3. java.library.path 这是storm所依赖的本地依赖(ZeroMQ和JZMQ)的加载地址, 默认的是:/usr/local/lib:/opt/local/lib:/usr/lib, 大多情况下是对的,所以你应该不用更改这个配置。
4. nimbus.host 所有工作机器需要nimbus机器的地址, 这样它们才知道去哪里获取jar包和配置文件:
nimbus.host: "111.222.333.44"
5. supervisor.slots.ports 对于每一台工作机器,这个配置指定在这台工作机器上运行多少工作进程, 每个进程使用一个独立端口来接收消息,这个配置同时也指定使用哪些端口。如果你在这里定义5个端口, storm会在这个机器上最多分配5个工作进程。如果分配3个端口,那么最多分配3个进程。默认的配置是4个:
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
启动守护进程
最后一步是启动storm的所有守护进程。还是前面说的那样,对于每个进程都要有监控!storm是一个fail-fast系统,出现什么不可预知的错误的时候它都会退出的。storm被设计成在任何时候都可以安全退出, 在任何时候都能正确重启, 这就是storm为什么不在线程内存储状态 — 如果Nimbus和Supervisor重启的话,不会影响正在运行的topology。下面介绍如何启动这些线程:
Nimbus 在Nimbus机器上运行bin/storm nimbus
Supervisor 在每台工作机器上运行bin/storm supervisor, supervisor负责启动和终止工作机器上的工作进程。
UI storm UI是一个可以查看storm运行状态的的一个网站,通过bin/storm ui运行,访问地址: http://{nimbus.host}:8080/。
就像你能看到的一样,运行storm集群很简单。这些进程会往你解压storm发行版的目录的子目录logs目录里面打日志。