需要有关风暴的帮助

时间:2013-10-01 08:48:11

标签: hadoop apache-zookeeper apache-storm

1)如果Nimbus失败会怎么样?我们可以将其他节点转换为Nimbus吗?

2)拓扑输出存储在哪里?当一个螺栓发出一个元组时,它存储在哪里?

3)如果zookeeper失败会怎么样?

2 个答案:

答案 0 :(得分:4)

  1. Nimbus本身是一个容错的进程,这意味着它不会将其状态存储在内存中,而是存储在外部数据库(Zookeeper)中。因此,如果Nimbus崩溃(一种不太可能的情况),在下一次启动时它将恢复处理停止的位置。 Nimbus通常必须设置为由外部监控系统监控,例如Monit,它将定期检查Nimbus过程状态,并在出现任何问题时重新启动它。我建议您阅读Storm project's wiki以获取更多信息。

    Nimbus是Storm群集的主节点,不可能有多个Nimbus节点。 (更新:Storm社区现在(截至2014年5月)通过让多个Nimbuses互相心跳来积极致力于使Nimbus守护程序以故障转移的方式容错)

  2. 元组被“存储”在元组树中,并随着拓扑执行的进行传递给拓扑执行链中的下一个螺栓。对于物理存储,元组可能存储在内存结构中,并根据需要进行分类以在集群的节点之间分配。完整的Storm集群的状态本身存储在Zookeeper中。 Storm并不关心拓扑结构或螺栓输出的持久存储 - 你的工作就是坚持处理结果。

  3. 与Nimbus相同,Zookeper在真实的生产Storm群集中必须配置可靠性,而Zookeeper则意味着在不同服务器上运行奇数个Zookeeper节点。您可以在Zookeper Administrator's Guide中找到有关配置Zookeeper生产群集的更多信息。如果Zookeeper失败(尽​​管在正确配置的Zookeeper集群中极不可能出现这种情况),Storm集群将无法继续处理,因为所有集群的状态都存储在Zookeeper中。

答案 1 :(得分:1)

关于问题1),来自Storm作者和维护者Nathan Marz的bug report以及随后的评论澄清了这个问题:

  

Storm不是为拓扑部分运行而设计的。当你击倒主人时,它无法重新分配失败的工人。我们正在研究Nimbus故障转移。 Nimbus对重启过程具有容错能力,这使得它对我们和大多数人的用例具有足够的容错能力。