一 什么是zookeeper
自己的理解:zookeeper 其實就是個管理員,監控 協調 所有需要同步的設備或進程。
官方: Zookeeper 是一個分布式的,開放源碼的應用協調服務。是以Fast paxos 算法為基礎,實現同步服務,配置維護和命名服務等分布式應用。
Zookeeper的穩定性
Zookeeper通過一種和文件系統很像的層級命名空間讓分布式進程互相協同工作。這些命名空間有一系列數據寄存器組成,我們也叫這些數據寄存器為znodes。這些znodes存儲在內存中。所以zookeeper有着高的吞吐和低延遲。
zookeeper實現了高性能、高可靠性、和有序的訪問、高性能保證了其能應用在大型的分布式文件系統中。高可靠性保證其不會因為單一節點的故障而造成任何問題。有序的訪問能保證客戶端實現較為復雜的同步操作。
zookeeper的有序: 使用數字來對每一個更新進行標記。后續的操作可以根據這個順序實現諸如同步操作這樣更高更抽象的服務。即:每個服務器都按這個順序進行操作,所以只要初始狀態一樣,那么結束狀態也就一樣,保證了每個服務器的一致性。
zookeeper 高效性表現在以讀為主的系統集群上。
zookeeper在hadoop和hbase上的作用:
在hadoop上 保證整個集群中只有一個namenode,以及存儲配置信息等。
在Hbase上:
1 保證集群中只有一個Hmaster
2 由於Hregionserver 也在zookeeper中注冊了,所以可以監控Hregion server的狀態,及時的region server進行處理。
3 存儲了region的尋址入口(即.root表中的信息)
4 存儲了Hbase的schema,包括有哪些table,每個table有哪些column family。