Daemon Fault Tolerance(守護線程容錯機制)
當worker死掉時會發生什麼?
當node死掉時會發生什麼?
當Nimbus或者Supervisor daemons死掉時會發生什麼?
Nimbus是否會出現單獨失敗的情況?
Storm怎樣保證數據處理?
Storm有不一樣的守護進程。Nimbus負責調度wokers,supervisors負責建立和銷燬workers。這些信息能夠在日誌中或Storm UI中看到。html
當worker死掉時,supervisor將重啓它。若是worker啓動老是失敗且不能正常發送心跳消息給Nimbus,那Nimbus就會從新調度worker。node
若是節點發生故障,致使分配到某個節點的全部tasks執行都會超時,那Nimbus會將這些tasks從新分配到另外的節點上。apache
Nimbus和Supervisor daemons都是設計爲快速失敗的(任何意外情況發生時均可能致使進程自身崩潰)以及無狀態的(全部的狀態都是保存在Zookeeper或者Disk上)。就像Storm集羣的配置描述的同樣, Nimbus和Supervisor daemons必須運行在監控之下,這個監控是使用諸如daemontools或者monit等工具實現的。所以,若是Nimbus或者Supervisor死掉的話,它們會像什麼都沒發生同樣再次重啓。
最須要指出的是, 沒有worker進程會受到Nimbus或者Supervisors死掉的影響。而相比之下,對Hadoop來講, 若是JobTracker死掉的話, 全部運行的jobs信息都會丟失。工具
若是Nimbus 節點死掉的話, worker依然會運行下去。另外, supervisors在它們死掉時依然會重啓。儘管如此,沒有Nimbus,worker 在須要時(好比worker所在機器宕機時)不會從新分配到其餘機器上。
Storm的Nimbus從1.0.0開始已實現HA機制。詳情看Nimbus HA Design。oop
Storm提供保證數據處理的機制,即便節點死掉或者丟失消息時也能夠保證。更多細節能夠查看保證消息處理機制 。線程