?一、什么是Zookeeper
Zookeeper是一個hadoop的分布式協(xié)調服務,它包含一個簡單的源語集。分布式應用程序可以基于它市縣同步服務,配置維護和命名服務。Zookeeper本身就是一個分布式集群,提供少量數(shù)據(jù)的存儲和管理。能夠把數(shù)據(jù)在集群內部進行同步,在各個節(jié)點之間能夠保持數(shù)據(jù)的一致性。提供了對數(shù)據(jù)節(jié)點的監(jiān)聽器,對數(shù)據(jù)節(jié)點的數(shù)據(jù)發(fā)生變化,則會記錄。

二、Zookeeper中的角色
Zookeeper中的角色氛圍Leader和Fllower,Leader實現(xiàn)數(shù)據(jù)的寫操作,然后再通知其他的follower,只要超過集群中一半的節(jié)點更新成功,則認為寫操作成功。Leader和Fllower 并不是指定的,而是通過選舉機制投票產生。
1、領導者(leader),負責進行投票的發(fā)起和決議,更新系統(tǒng)狀態(tài)
2、學習者(learner),包括跟隨者(follower)和觀察者(observer),follower用于接受客戶端請求并想客戶端返回結果,在選主過程中參與投票
3、Observer可以接受客戶端連接,將寫請求轉發(fā)給leader,但observer不參加投票過程,只同步leader的狀態(tài),observer的目的是為了擴展系統(tǒng),提高讀取速度
4、客戶端(client),請求發(fā)起方

三、為什么使用Zookeeper?
1、大部分分布式應用需要一個主控、協(xié)調器或控制器來管理物理分布的子進程(如資源、任務分配等)
2、目前,大部分應用需要開發(fā)私有的協(xié)調程序,缺乏一個通用的機制
3、協(xié)調程序的反復編寫浪費,且難以形成通用、伸縮性好的協(xié)調器
4、ZooKeeper:提供通用的分布式鎖服務,用以協(xié)調分布式應用
四、Zookeeper能幫我們做什么?
1、Hadoop2.0,使用Zookeeper的事件處理確保整個集群只有一個活躍的NameNode,存儲配置信息等.
2、HBase,使用Zookeeper的事件處理確保整個集群只有一個HMaster,察覺HRegionServer聯(lián)機和宕機,存儲訪問控制列表等.
五、Zookeeper文件結構
Zookeeper管理客戶所存儲的數(shù)據(jù)采用類似于文件樹的結構:
每個節(jié)點叫做一個node /order-anlalyze(info_data<1M)/aa(info_data<1M)
六、Zookeeper的節(jié)點
1、Znode有兩種類型,短暫的(ephemeral)和持久的(persistent)
2、Znode的類型在創(chuàng)建時確定并且之后不能再修改
3、短暫znode的客戶端會話結束時,zookeeper會將該短暫znode刪除,短暫znode不可以有子節(jié)點
4、持久znode不依賴于客戶端會話,只有當客戶端明確要刪除該持久znode時才會被刪除
5、Znode有四種形式的目錄節(jié)點,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL