原文链接:http://storm.apache.org/releases/1.0.2/Daemon-Fault-Tolerance.html
本人原创翻译,转载请注明出处
Storm有几种守护进程:负责调度worker的Nimbus,负责启动和停止worker的supervisors,提供日志访问的log viewer,展示集群状态信息的UI。
worker死掉时会发生什么?
worker死掉时,supervisor将会重启它。如果它启动时继续死掉并且不能给Nimbus发送心跳,Nimbus会重新调度worker。
节点死掉时会发生什么?
分配给那个机器的任务将超时,Nimbus会重新分配任务给其他机器。
Nimbus或Supervisor进程死掉会发生什么?
Nimbus和Supervisor守护程序被设计为fail-fast(任何时候异常发生就进行自毁)和stateless(所有的状态保存在zookeeper或磁盘上)。正如在Setting up a Storm cluster里描述的那样,Nimbus和Supervisor守护程序必须使用daemontools或monit等工具监督管理。所以如果Nimbus和Supervisor守护程序死掉了,它们会像什么都没发生一样重启。
显而易见,worker进程不受Nimbus和Supervisor守护程序异常终止的影响。这和Hadoop正好相反,在Hadoop里,如果JobTracker终止,运行中的jobs也会终止。
Nimbus是否是单点失败?
如果Nimbus节点终止,workers会继续运行。此外,supervisors也会继续重启workers(如果worker终止的话)。但是,没有Nimbus,wokers就不会在必要的时候被分配到其他机器上,比如有机器宕机的时候。
从1.0.0版本以后,Storm Nimbus是高可用的,更多信息请参考Highly Available Nimbus Design
Storm如何保证消息处理?
即使节点宕掉或消息丢失,Storm也有保证消息处理的机制。请阅Storm基础(四)保证消息处理