Zookeeper簡介與叢集搭建

金羅老師發表於2018-12-01

Zookeeper簡介

Zookeeper是一個高效的分散式協調服務,可以提供配置資訊管理、命名、分散式同步、叢集管理、資料庫切換等服務。它不適合用來儲存大量資訊,可以用來儲存一些配置、釋出與訂閱等少量資訊。Hadoop、Storm、訊息中介軟體、RPC服務框架、分散式資料庫同步系統,這些都是Zookeeper的應用場景。

Zookeeper叢集中節點個數一般為奇數個(>=3),若叢集中Master掛掉,剩餘節點個數在半數以上時,就可以推舉新的主節點,繼續對外提供服務。


在這裡還是要推薦下我自己建的大資料學習群:199427210,群裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料軟體開發相關的),包括我自己整理的一份2018最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴加入。

Zookeeper簡介與叢集搭建

Zookeeper簡介與叢集搭建
客戶端發起事務請求,事務請求的結果在整個Zookeeper叢集中所有機器上的應用情況是一致的。不會出現叢集中部分機器應用了該事務,而存在另外一部分叢集中機器沒有應用該事務的情況。在Zookeeper叢集中的任何一臺機器,其看到的伺服器的資料模型是一致的。Zookeeper能夠保證客戶端請求的順序,每個請求分配一個全域性唯一的遞增編號,用來反映事務操作的先後順序。Zookeeper將全量資料儲存在記憶體中,並直接服務於所有的非事務請求,在以讀操作為主的場景中效能非常突出。

Zookeeper使用的資料結構為樹形結構,根節點為"/"。Zookeeper叢集中的節點,根據其身份特性分為leader、follower、observer。leader負責客戶端writer型別的請求;follower負責客戶端reader型別的請求,並參與leader選舉;observer是特殊的follower,可以接收客戶端reader請求,但是不會參與選舉,可以用來擴容系統支撐能力,提高讀取速度。

Zookeeper是一個基於觀察者模式設計的分散式服務管理框架,負責儲存和管理相關資料,接收觀察者的註冊。一旦這些資料的狀態發生變化,zookeeper就負責通知那些已經在zookeeper叢集進行註冊並關心這些狀態發生變化的觀察者,以便觀察者執行相關操作。

Zookeeper使用的是ZAB原子訊息廣播協議,節點之間的一致性演算法為Paxos,能夠保障分散式環境中資料的一致性。分散式場景下高可用是Zookeeper的特性,可以採用第三方客戶端的實現,即Curator框架。


Zookeeper簡介與叢集搭建


Paxos 演算法解決的問題是一個分散式系統如何就某個值(決議)達成一致。一個典型的場景是,在一個分散式資料庫系統中,如果各節點的初始狀態一致,每個節點執行相同的操作序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個“一致性演算法”以保證每個節點看到的指令一致。一個通用的一致性演算法可以應用在許多場景中,是分散式計算中的重要問題。因此從20世紀80年代起對於一致性演算法的研究就沒有停止過。節點通訊存在兩種模型:共享記憶體(Shared memory)和訊息傳遞(Messages passing)。Paxos 演算法就是一種基於訊息傳遞模型的一致性演算法。
不僅僅是分散式系統中,凡是多個過程需要達成某種一致的場合都可以使用Paxos 演算法。一致性演算法可以通過共享記憶體(需要鎖)或者訊息傳遞實現,Paxos 演算法採用的是後者。Paxos 演算法適用的幾種情況:一臺機器中多個程式/執行緒達成資料一致;分散式檔案系統或者分散式資料庫中多客戶端併發讀寫資料;分散式儲存中多個副本響應讀寫請求的一致性。
Zookeeper叢集搭建

在本文中Zookeeper節點個數(奇數)為3個。Zookeeper預設對外提供服務的埠號2181 。Zookeeper叢集內部3個節點之間通訊預設使用2888:3888

192.168.0.217   192.168.0.218    192.168.0.219

下載zookeeper對應的tar包


Zookeeper簡介與叢集搭建

分別上傳tar包到192.168.0.217   192.168.0.218    192.168.0.219


Zookeeper簡介與叢集搭建

在217、218、219三個zookeeper節點上分別執行下行指令,然後將解壓後的檔名zookeeper-3.4.10修改為zookeeper。

tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/

在三個zookeeper節點配置環境變數

vim /etc/profile

新增export ZOOKEEPER_HOME=/usr/local/zookeeper

在path中新增$ZOOKEEPER_HOME/bin

Zookeeper簡介與叢集搭建

執行source /etc/profile   使環境變數立即生效

修改zookeeper中conf目錄下的zoo_sample.cfg為zoo.cfg


Zookeeper簡介與叢集搭建

修改三個zookeeper節點中的zoo.cfg檔案,修改dataDir,新增server.0、server.1、server.2


Zookeeper簡介與叢集搭建

在zookeeper目錄下,建立data目錄。在3個zookeeper節點中data目錄下分別建立myid檔案,並分別新增內容0、1、2


Zookeeper簡介與叢集搭建

啟動zookeeper


Zookeeper簡介與叢集搭建

zkServer.sh start

zkServer.sh status


Zookeeper簡介與叢集搭建

在zookeeper中任意一個節點,執行指令zkCli.sh


Zookeeper簡介與叢集搭建

執行指令zkCli.sh help  ,檢視幫助資訊


Zookeeper簡介與叢集搭建

ls  /   查詢根目錄

create /test abc   建立節點並賦值

get /test   獲取指定節點的值

set /test cb  設定已存在節點的值

rmr /test  遞迴刪除節點

Zookeeper簡介與叢集搭建

Zookeeper簡介與叢集搭建

delete /test/test01  刪除不存在子節點的節點


Zookeeper簡介與叢集搭建

在Eclipse中檢視Zookeeper叢集節點

也可以使用ZooInspector檢視。


Zookeeper簡介與叢集搭建

此時,在Xshell中執行zkCli.sh,檢視Zookeeper叢集中樹形結構的內容

Zookeeper簡介與叢集搭建

在Eclipse、ZooInspector中均可以新增、刪除Zookeeper叢集的節點

Zookeeper簡介與叢集搭建


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561003/viewspace-2222347/,如需轉載,請註明出處,否則將追究法律責任。

相關文章