Storm的容错性

Storm有几种不同的守护进程。Nimbus调度worker,Supervisor运行和杀死worker,log viewer 提供对于日志的访问方式,UI展示集群的状态。

一、问:如果一个Worker死掉了,那么会发生什么?

答:如果一个worker死掉了,那么supervisor会重启这个worker。如果这个worker在启动的时候持续失败,那么它将不能与Nimbus正常进行心跳通信,Nimbus将会重新调度这个worker。

二、问:如果一个Node死掉了,会发生什么?

答:分配到那台机器的任务将会超时,并且Nimbus会重新分配这些任务到其他的机器上面。

三、问:如果Nimbus或者Supervisor挂掉了,会怎么样?

答:Nimbus和Supervisor是被设计成快速失败fail-fast(无论何时发生任何异常的情形时会执行自毁),并且无状态的(所有的状态是被存储在zookeeper或者disk上的)。正如Setting up a Storm cluster中描述的,Nimbus和Supervisor必须运行在一个类似于daemontools or monit 的监控之下,这样可以在Nimbus或者Supervisor死掉以后,可以像什么也没有发生一样的重启他们。

更值得注意的是,Nimbus或者Supervisor的死掉不会对任何的worker处理产生影响。这个是与Hadoop大不相同的,如果JobTracker死掉,那么所有运行的job的信息会丢掉。

四、问:Nimbus是否有单点故障?

答:如果你失去了Nimbus节点,那么worker会继续工作。另外,supervisor会继续在worker死掉的时候重启他们。然而,如果没有Nimbus,worker将不会在需要的时候被重新分派到前天的机器上面(比如你失去了一个工作机器)。

Storm Nimbus在1.0.0 以后是高可用的。更多的信息请参看:Nimbus HA Design 文档。

五、问:Storm怎么能保证数据处理?

答:storm提供了机制来保证数据处理,即使节点死掉或者消息丢失。请参看:Guaranteeing message processing 文档。

猜你喜欢

转载自1358440610-qq-com.iteye.com/blog/2405147