Storm 有几个不同的守护进程. 调度 workers 的 Nimbus, 启动和杀死 workers 的 supervisors, 可以访问日志的 log viewer(日志查看器)以及显示集群状态 UI.
当一个 worker 挂掉时, supervisor 将会重启它. 如果在启动它时继续发生故障并且没有发送 hearbeat(心跳)给 Nimbus, 那么 Nimbus 将会重新调度 worker.
分配给该机器的 task(任务)将超时, Nimbus 将这些 task(任务)重新分配给其他机器.
Nimbus 和 Supervisor 守护进程是为 fail-fast(快速失败)(遇到任何意外情况时进程自毁)和无状态(所有状态都保存在 Zookeeper 或磁盘上)而设计的. 像 部署 Storm 集群 中描述的一样, Nimbus 和 Supervisor 守护进程必须使用 daemontools 或 monit 工具进行监督. 所以如果 Nimbus 或 Supervisor 守护进程挂掉后, 它们会像什么都没发生一样重启.
最值得注意的是, 没有 worker 进程受到 Nimbus 或 Supervisors 挂掉的影响. 这与 Hadoop 相反, 如果 JobTracker 挂掉, 所有正在运行的 job 作业都将丢失.
如果你失去了 Nimbus 节点, workers 仍然会继续工作. 此外,supervisors 如果挂掉, 将继续重新启动 workers. 但是,如果没有 Nimbus,worker 在必要时不会重新分配给其他机器(如失去 worker 机器).
Storm Nimbus 自 1.0.0 以来是 highly available(高可用的). 更多信息请参阅 Nimbus HA 高可用设计 文档.
Storm 提供了保证数据处理的机制, 即使节点挂掉或 messages(消息)丢失. 更多细节请参阅 保证消息处理.