您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何進行Zookeeper分析與集群搭建,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Zookeeper簡介
Zookeeper是一個高效的分布式協調服務,可以提供配置信息管理、命名、分布式同步、集群管理、數據庫切換等服務。它不適合用來存儲大量信息,可以用來存儲一些配置、發布與訂閱等少量信息。Hadoop、Storm、消息中間件、RPC服務框架、分布式數據庫同步系統,這些都是Zookeeper的應用場景。
Zookeeper集群中節點個數一般為奇數個(>=3),若集群中Master掛掉,剩余節點個數在半數以上時,就可以推舉新的主節點,繼續對外提供服務。
在這里還是要推薦下我自己建的大數據學習群:199427210,群里都是學大數據開發的,如果你正在學習大數據 ,小編歡迎你加入,大家都是軟件開發黨,不定期分享干貨(只有大數據軟件開發相關的),包括我自己整理的一份2018最新的大數據進階資料和高級開發教程,歡迎進階中和進想深入大數據的小伙伴加入。
客戶端發起事務請求,事務請求的結果在整個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框架。
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包
分別上傳tar包到192.168.0.217 192.168.0.218 192.168.0.219
在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
執行source /etc/profile 使環境變量立即生效
修改zookeeper中conf目錄下的zoo_sample.cfg為zoo.cfg
修改三個zookeeper節點中的zoo.cfg文件,修改dataDir,添加server.0、server.1、server.2
在zookeeper目錄下,創建data目錄。在3個zookeeper節點中data目錄下分別創建myid文件,并分別添加內容0、1、2
啟動zookeeper
zkServer.sh start
zkServer.sh status
在zookeeper中任意一個節點,執行指令zkCli.sh
執行指令zkCli.sh help ,查看幫助信息
ls / 查找根目錄
create /test abc 創建節點并賦值
get /test 獲取指定節點的值
set /test cb 設置已存在節點的值
rmr /test 遞歸刪除節點
delete /test/test01 刪除不存在子節點的節點
在Eclipse中查看Zookeeper集群節點
也可以使用ZooInspector查看。
此時,在Xshell中執行zkCli.sh,查看Zookeeper集群中樹形結構的內容
在Eclipse、ZooInspector中均可以添加、刪除Zookeeper集群的節點
上述內容就是如何進行Zookeeper分析與集群搭建,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。