原文鏈接: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基礎(四)保證消息處理