在storm集群中,我們常常使用zookeeper作為協調者。那么具體發揮的是什么作用呢?
概括來說,zookeeper是nimbus和supervisor進行交互的中介。具體來說有二:
1、nimbus通過在zookeeper上寫狀態信息來分配任務。通俗的講就是寫哪些supervisor執行哪些task的對應關系。而supervisor則通過從zookeeper上讀取這些狀態信息,來領取任務。
2、supervisor、task會發送心跳到zookeeper,使得nimbus可以監控整個集群的狀態,從而在task執行失敗時,可以重啟他們。
更詳細的內容,請參考這篇文章:
http://greeensy.github.io/jstorm-status/