关于storm群集容错概念的简单介绍
1、当一个worker死掉会发生什么?
当一个worker死掉,那么supervisor会重新启动这个worker。如果它总是启动失败将不能发送心跳到nimbus,那么nimbus将把这个worker分配到另一台机器上。
2、当一个节点死掉将会发生什么?
分配给这台机器的任务将会超时,那么nimbus将会把任务重新分配到其他机器。
3、当Nimbus或者Supervisor实例死掉会发生什么?
Nimbus和Supervisor被设计成快速失败的(当发生任何意外情况时进程将自己结束)和无状态的(所有的状态都存在zookeeper里或者磁盘上)。当启动一个storm群集时,Nimbus和Supervisor进程将使用进程工具或监视工具来运行一个守护进程。因此,当Nimbus和Supervisor进程死掉时,守护进程会重启它们就像什么都没发生过。
值得注意的是,没有worker会受到Nimbus和Supervisor死掉的影响,相对于hadoop,如果JobTracker死掉。所有运行中的job将会丢失。
4、nimbus是一个单点故障?
如果丢失了nimbus节点,worker将会继续运行程序,另外,supervisors 将会继续重启失败的worker。但是,如果一直没有nimbus,当需要的时候worker将不能被分配给其他机器(例如有一台worker机器丢失的情况)。
因此,答案是nimbus近乎是一个单点故障,在实践中,这并不是一个大问题,当nimbus节点丢失时,并不会有什么灾难发生。我们有计划在未来提高nimbus的高可用性。
5、storm如何保证数据的处理的?
storm提供了一种机制保证即使节点死掉或者消息丢失数据依然能继续处理。(应该是数据的重放机制)