Storm基础篇五-容错性

170 阅读2分钟

进程容错性

Storm 有几种不同的进程,nimbus:安排调度workers,supervisors:开启和关闭workers,log viewer:允许访问日志,UI:显示集群的状态信息。

worker 死掉的时候会发生什么?

当一个worker挂掉的时候,supervisor将重启它。如果在启动时持续的失败并且无法发送心跳至nimbus,那么nimbus 将重新分配调度 worker。

当一个节点死亡时会发生什么?

节点(集群中的工作节点,非 Nimbus 所在服务器)故障时,该节点所分配的任务将超时,且 nimbus 会将这些任务重新分配到其它机器上。

Nimbus 或 Supervisor 进程死亡会发生什么?

Nimbus 和 Supervisor 进程本身设计就是快速失败(fail-fast,无论何时发生异常都将启动自毁操作)和无状态(stateless,所有的状态保存在 ZooKeeper 或磁盘种)的。如 Setting up a Storm cluster 所述,Nimbus 和 Supervisor 进程必须在如 daemontools 或 monit 等监督程序下运行。所以当 nimbus 或 supervisor 进程死亡,将立即重启如无事发生一般。 值得注意的是,不会有 worker 受到 nimbus 或 supervisor 进程死亡的影响。在 Hadoop 中 JobTracker 的故障会导致所有正在运行的 job 运行失败。(这还要diss一波,无情。)

Nimbus 是单节点故障吗?

单节点故障:是指在一个系统中的某个在失效或停止运转后会导致整个系统不能工作的组件。
如果 nimbus 节点出现故障,worker 将继续工作。此外,如果此时 worker 死亡,supervisor 将重启死亡的worker。但是没有 nimbus节点,worker 将无法分配给其它的机器。
Storm 从1.0.0版本开始就具有高可用性。详情请见 Nimbus HA Design 文档。

Storm 是如何保证消息传输的可靠性的?

Storm提供了一些机制来保证即使节点死亡或消息丢失也能正确的处理数据,详情可参考 上一篇博客Guaranteeing message processing