1. 程式人生 > >Zookeeper伺服器叢集的搭建與操作

Zookeeper伺服器叢集的搭建與操作

ZooKeeper
在這裡插入圖片描述

作用:Zookeeper 可以用來保證資料在zk叢集之間的資料的事務性一致(原子操作)。

介紹:Zookeeper 是 Google 的 Chubby一個開源的實現,是 Hadoop 的分散式協調服務。

它包含一個簡單的原語集,分散式應用程式可以基於它實現同步服務,配置維護和命名服務等。

特性:簡單的、富有表現力的、具有高可用性、採用鬆耦合互動方式、是一個資源庫。

如何搭建ZooKeeper伺服器叢集
2.1 ZooKeeper伺服器叢集規模不小於3個節點,要求各伺服器之間系統時間要保持一致。
2.2 在hadoop0的/usr/local目錄下,解壓縮zookeeper-3.4.5.tar.gz(tar -zxvf zookeeper-3.4.5.tar.gz),
  設定環境變數vi /etc/profile
    export ZOOKEEPER_HOME=/usr/local/zk
    export PATH=.:…: …:ZOOKEEPER_HOME/bin:$…
  環境變數設定好了,執行source /etc/profile
2.3 在conf目錄下
    重新命名: mv zoo_sample.cfg zoo.cfg
2.4 編輯該檔案,執行vi zoo.cfg
    修改dataDir=/usr/local/zk/data
    新增server.0=hadoop0:2888:3888
      server.1=hadoop1:2888:3888
      server.2=hadoop2:2888:3888
2.5 建立資料夾mkdir /usr/local/zk/data
2.6 在data目錄下,建立檔案myid(vi myid),值為0
2.7 把zk目錄複製到hadoop1和hadoop2中
      scp -r /usr/local/zk/ hadoop1:/usr/local/
      scp -r /usr/local/zk/ hadoop2:/usr/local/
  將hadoop0中的環境變數複製到hadoop1和hadoop2中
      scp /etc/profile hadoop1:/etc/
      scp /etc/profile hadoop2:/etc/
  環境變數複製好了以後,在hadoop1和hadoop2上都要執行source /etc/profile
2.8 把hadoop1中相應的myid的值改為1
    vi /usr/local/zk/data/myid 將裡面的值改為1
  把hadoop2中相應的myid的值改為2
    vi /usr/local/zk/data/myid 將裡面的值改為2
2.9 啟動,

在三個節點上分別執行命令zkServer.sh start
cd /usr/local/zk/bin
ls
zkServer.sh start
啟動完了之後,在bin目錄下多了一個zookeeper.out
2.10 檢驗,在三個節點上分別執行命令zkServer.sh status(可以看到MODE,誰是leader,誰是follower)

ZooKeeper的操作(只有shell操作,也可以用java操作)
在hadoop0下,執行zkCli.sh ,就進入到了ZooKeeper,可以在裡面使用命令進行相關操作:
ls /
create /chaoren hadoop (/chaoren是path,hadoop是裡面的data)
get /chaoren (可以檢視到裡面的data)

也可以在hadoop1或hadoop2裡面:
zkCli.sh
get /chaoren
也可以修改裡面的data:
set /chaoren change_data (將chaoren裡面的data修改為change_data)
get /chaoren

ZooKeeper的資料模型

層次化的目錄結構,命名符合常規檔案系統規範

每個節點在zookeeper中叫做znode,並且其有一個唯一的路徑標識

節點Znode可以包含資料和子節點,但是EPHEMERAL型別的節點不能有子節點

Znode中的資料可以有多個版本,比如某一個路徑下存有多個數據版本,那麼查詢這個路徑下的資料就需要帶上版本

客戶端應用可以在節點上設定監視器

節點不支援部分讀寫,而是一次性完整讀寫

Zookeeper的節點

Znode有兩種型別,短暫的(ephemeral)和持久的(persistent)

Znode的型別在建立時確定並且之後不能再修改

短暫znode的客戶端會話結束時,zookeeper會將該短暫znode刪除,短暫znode不可以有子節點

持久znode不依賴於客戶端會話,只有當客戶端明確要刪除該持久znode時才會被刪除

Znode有四種形式的目錄節點,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL

Zookeeper的角色

領導者(leader),負責進行投票的發起和決議,更新系統狀態

學習者(learner),包括跟隨者(follower)和觀察者(observer),follower用於接受客戶端請求並想客戶端返回結果,在選主過程中參與投票

Observer可以接受客戶端連線,將寫請求轉發給leader,但observer不參加投票過程,只同步leader的狀態,observer的目的是為了擴充套件系統,提高讀取速度

客戶端(client),請求發起方