在storm集群中,我们常常使用zookeeper作为协调者。那么具体发挥的是什么作用呢?
概括来说,zookeeper是nimbus和supervisor进行交互的中介。具体来说有二:
1、nimbus通过在zookeeper上写状态信息来分配任务。通俗的讲就是写哪些supervisor执行哪些task的对应关系。而supervisor则通过从zookeeper上读取这些状态信息,来领取任务。
2、supervisor、task会发送心跳到zookeeper,使得nimbus可以监控整个集群的状态,从而在task执行失败时,可以重启他们。
更详细的内容,请参考这篇文章:
http://greeensy.github.io/jstorm-status/
Trident会再Zookeeper中保存一小部分状态信息来追踪数据的处理情况,而在 代码中我们指定的字符串“spout1”就是Zookeeper中用来存储metadata信息的Znode节点