Zookeeper入門

一、什麼是Zookeeper?

        Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分佈式協調服務,它包含一個簡單的原語集,分佈式應用程序可以基於它實現同步服務,配置維護和命名服務等。

二、爲什麼使用Zookeeper?

       1.大部分分佈式應用需要一個主控、協調器或控制器來管理物理分佈的子進程(如資源、任務分配等)
       2.目前,大部分應用需要開發私有的協調程序,缺乏一個通用的機制
       3.協調程序的反覆編寫浪費,且難以形成通用、伸縮性好的協調器
       4.ZooKeeper:提供通用的分佈式鎖服務,用以協調分佈式應用

三、Zookeeper能幫我們做什麼?

       1. Hadoop2.0,使用Zookeeper的事件處理確保整個集羣只有一個活躍的NameNode,存儲配置信息等.
       2.HBase,使用Zookeeper的事件處理確保整個集羣只有一個HMaster,察覺HRegionServer聯機和宕機,存儲訪問控制列表等.

四、Zookeeper的特性

       1.Zookeeper是簡單的,使用方便,修改配置文件即可,無需編寫代碼。
       2.Zookeeper是富有表現力的,功能強大
       3.Zookeeper具有高可用性
       4.Zookeeper採用鬆耦合交互方式
       5.Zookeeper是一個資源庫

五、Zookeeper部署架構圖

      

六、Zookeeper的安裝和配置

     6.1 單機模式

         1.上傳zk安裝包(WinSCP)
         2.解壓 

     6.2 集羣模式

        1.上傳zk安裝包
        2.解壓
        3.配置(先在一臺節點上配置)
             3.1添加一個zoo.cfg配置文件
                  $ZOOKEEPER/conf
                  mv zoo_sample.cfg zoo.cfg
             3.2修改配置文件(zoo.cfg)
                  dataDir=/itcast/zookeeper-3.4.5/data
                  server.5=hadoop04:2888:3888
                  server.6=hadoop05:2888:3888
                  server.7=hadoop06:2888:3888
              3.3在(dataDir=/cloud/zookeeper-3.4.5/data)創建一個myid文件,裏面內容是server.N中的N(server.2裏面內容爲2)
                         echo "4" > myid
              3.4將配置好的zk拷貝到其他節點
                  scp -r /itcast/zookeeper-3.4.5/ hadoop04:/cloud/
                  scp -r /itcast/zookeeper-3.4.5/ hadoop05:/cloud/
              3.5注意:在其他節點上一定要修改myid的內容
                   在itcast05應該講myid的內容改爲5 (echo "5" > myid)
                   在itcast06應該講myid的內容改爲6 (echo "6" > myid)
         4.啓動集羣
            在每臺節點上分別啓動zk
            ./zkServer.sh start
            在每臺節點上分別查看zk的狀態
            ./zkServer.sh status

          【注:安裝Zookeeper集羣之前要確保集羣中的節點防火牆徹底關閉,否則Zookeeper集羣無法通信!!!】

七、Zookeeper的數據模型

    1.層次化的目錄結構,命名符合常規文件系統規範
    2.每個節點在zookeeper中叫做znode,並且其有一個唯一的路徑標識
    3.節點Znode可以包含數據和子節點,但是EPHEMERAL類型的節點不能有子節點【沒試驗】
    4.Znode中的數據可以有多個版本,比如某一個路徑下存有多個數據版本,那麼查詢這個路徑下的數據就需要帶上版本
    5.客戶端應用可以在節點上設置監視器【沒試驗】
    6.節點不支持部分讀寫,而是一次性完整讀寫

八、Zookeeper的角色

    領導者(leader),負責進行投票的發起和決議,更新系統狀態。
    學習者(learner),包括跟隨者(follower)和觀察者(observer),follower用於接受客戶端請求並想客戶端返回結果,在選主過程中參與投票
Observer可以接受客戶端連接,將寫請求轉發給leader,但observer不參加投票過程,只同步leader的狀態,observer的目的是爲了擴展系統,提高讀取速度
    客戶端(client),請求發起方。

九、Zookeeper的讀寫機制

    Zookeeper是一個由多個server組成的集羣
    一個leader,多個follower
    每個server保存一份數據副本
    全局數據一致
    分佈式讀寫
    更新請求轉發,由leader實施

十、Zookeeper的保證

    更新請求順序進行,來自同一個client的更新請求按其發送順序依次執行
    數據更新原子性,一次數據更新要麼成功,要麼失敗
    全局唯一數據視圖,client無論連接到哪個server,數據視圖都是一致的
    實時性,在一定事件範圍內,client能讀到最新數據


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章