【原】Storm 守护线程容错机制
Storm入门教程
1. Storm基础
Storm
Storm主要特点
Storm基本概念
Storm调度器
Storm配置
Guaranteeing Message Processing(消息处理保障机制)
Daemon Fault Tolerance(守护线程容错机制)
当worker死掉时会发生什么?
当node死掉时会发生什么?
当Nimbus或者Supervisor daemons死掉时会发生什么?
Nimbus是否会出现单独失败的状况?
Storm怎样保证数据处理?
理解Storm拓扑的并行
Tutorial
Local模式
在生产环境中运行Topologies
Daemon Fault Tolerance(守护线程容错机制)
Storm有不同的守护进程。Nimbus负责调度wokers,supervisors负责创建和销毁workers。这些信息可以在日志中或Storm UI中看到。
当worker死掉时会发生什么?
当worker死掉时,supervisor将重启它。如果worker启动总是失败且不能正常发送心跳消息给Nimbus,那Nimbus就会重新调度worker。
当node死掉时会发生什么?
如果节点发生故障,导致分配到某个节点的所有tasks执行都会超时,那Nimbus会将这些tasks重新分配到另外的节点上。
当Nimbus或者Supervisor daemons死掉时会发生什么?
Nimbus和Supervisor daemons都是设计为快速失败的(任何意外状况发生时都可能导致进程自身崩溃)以及无状态的(所有的状态都是保存在Zookeeper或者Disk上)。就像Storm集群的配置描述的一样, Nimbus和Supervisor daemons必须运行在监控之下,这个监控是使用诸如daemontools或者monit等工具实现的。因此,如果Nimbus或者Supervisor死掉的话,它们会像什么都没发生一样再次重启。
最需要指出的是, 没有worker进程会受到Nimbus或者Supervisors死掉的影响。而相比之下,对Hadoop来说, 如果JobTracker死掉的话, 所有运行的jobs信息都会丢失。
Nimbus是否会出现单独失败的状况?
如果Nimbus 节点死掉的话, worker依然会运行下去。另外, supervisors在它们死掉时依然会重启。尽管如此,没有Nimbus,worker 在需要时(比如worker所在机器宕机时)不会重新分配到其他机器上。
Storm的Nimbus从1.0.0开始已实现HA机制。详情看Nimbus HA Design。
Storm怎样保证数据处理?
Storm提供保证数据处理的机制,即使节点死掉或者丢失消息时也可以保证。更多细节可以查看保证消息处理机制 。