轉摘自:http://www.aboutyun.com/thread-6628-1-1.html
ZooKeeper 是什么缘缚?
ZooKeeper 顧名思義 動物園管理員,他是拿來管大象(Hadoop) 梭灿、 蜜蜂(Hive) 妄迁、 小豬(Pig) 的管理員, Apache Hbase和 Apache Solr 以及LinkedIn sensei 等項目中都采用到了 Zookeeper。ZooKeeper是一個分布式的帽馋,開放源碼的分布式應用程序協(xié)調服務,ZooKeeper是以Fast Paxos算法為基礎,實現(xiàn)同步服務绽族,配置維護和命名服務等分布式應用姨涡。
ZooKeeper用途
-
Zookeeper加強集群穩(wěn)定性
Zookeeper通過一種和文件系統(tǒng)很像的層級命名空間來讓分布式進程互相協(xié)同工作。這些命名空間由一系列數(shù)據(jù)寄存器組成吧慢,我們也叫這些數(shù)據(jù)寄存器為znodes涛漂。這些znodes就有點像是文件系統(tǒng)中的文件和文件夾。和文件系統(tǒng)不一樣的是检诗,文件系統(tǒng)的文件是存儲在存儲區(qū)上的匈仗,而zookeeper的數(shù)據(jù)是存儲在內(nèi)存上的。同時逢慌,這就意味著zookeeper有著高吞吐和低延遲悠轩。
Zookeeper實現(xiàn)了高性能,高可靠性攻泼,和有序的訪問火架。高性能保證了zookeeper能應用在大型的分布式系統(tǒng)上。高可靠性保證它不會由于單一節(jié)點的故障而造成任何問題忙菠。有序的訪問能保證客戶端可以實現(xiàn)較為復雜的同步操作何鸡。
Zookeeper加強集群持續(xù)性
組成Zookeeper的各個服務器必須要能相互通信。他們在內(nèi)存中保存了服務器狀態(tài)只搁,也保存了操作的日志音比,并且持久化快照俭尖。只要大多數(shù)的服務器是可用的氢惋,那么Zookeeper就是可用的。
客戶端連接到一個Zookeeper服務器稽犁,并且維持TCP連接焰望。并且發(fā)送請求,獲取回復已亥,獲取事件熊赖,并且發(fā)送連接信號。如果這個TCP連接斷掉了虑椎,那么客戶端可以連接另外一個服務器震鹉。
-
Zookeeper保證集群有序性
Zookeeper使用數(shù)字來對每一個更新進行標記。這樣能保證Zookeeper交互的有序捆姜。后續(xù)的操作可以根據(jù)這個順序實現(xiàn)諸如同步操作這樣更高更抽象的服務传趾。
-
Zookeeper保證集群高效
Zookeeper的高效更表現(xiàn)在以讀為主的系統(tǒng)上。Zookeeper可以在千臺服務器組成的讀寫比例大約為10:1的分布系統(tǒng)上表現(xiàn)優(yōu)異泥技。
-
數(shù)據(jù)結構和分等級的命名空間
Zookeeper的命名空間的結構和文件系統(tǒng)很像浆兰。一個名字和文件一樣使用/的路徑表現(xiàn),zookeeper的每個節(jié)點都是被路徑唯一標識
zookeeper在Hadoop及hbase中具體作用
Hadoop有NameNode,HBase有HMaster簸呈,為什么還需要zookeeper榕订,下面給大家通過例子給大家介紹。
一個Zookeeper的集群中,3個Zookeeper節(jié)點.一個leader,兩個follower的情況下,停掉leader,然后兩個follower選舉出一個leader.獲取的數(shù)據(jù)不變.我想Zookeeper能夠幫助Hadoop做到:Hadoop,使用Zookeeper的事件處理確保整個集群只有一個NameNode,存儲配置信息等.HBase,使用Zookeeper的事件處理確保整個集群只有一個HMaster,察覺HRegionServer聯(lián)機和宕機,存儲訪問控制列表等.