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叢集的節點
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561003/viewspace-2222347/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Zookeeper叢集搭建和簡介(二)
- 搭建zookeeper叢集(偽叢集)
- Zookeeper叢集搭建
- zookeeper 叢集搭建
- zookeeper叢集及kafka叢集搭建Kafka
- zookeeper叢集的搭建
- ZooKeeper 搭建 solr 叢集Solr
- linux下搭建ZooKeeper叢集(偽叢集)Linux
- Linux下搭建ZooKeeper叢集Linux
- zookeeper 高可用叢集搭建
- Zookeeper 叢集環境搭建
- Redis叢集搭建與簡單使用Redis
- Zookeeper叢集 + Kafka叢集Kafka
- 面試官:Zookeeper叢集怎麼搭建?面試
- 基於 ZooKeeper 搭建 Spark 高可用叢集Spark
- 基於 ZooKeeper 搭建 Hadoop 高可用叢集Hadoop
- ZooKeeper學習筆記一:叢集搭建筆記
- Zookeeper介紹與叢集安裝
- 叢集搭建完成簡要測試叢集(效能)頻寬與IOPS
- 分散式協調服務☞zookeeper叢集搭建分散式
- Hadoop叢集之 ZooKeeper和Hbase環境搭建Hadoop
- ZooKeeper 系列(二)—— Zookeeper單機環境和叢集環境搭建
- 訊息中介軟體Kafka+Zookeeper叢集簡介、部署和實踐Kafka
- Mac 使用 docker 搭建 kafka 叢集 + Zookeeper + kafka-managerMacDockerKafka
- 使用 Docker 一步搞定 ZooKeeper 叢集的搭建Docker
- Zookeeper客戶端使用與叢集原理客戶端
- k8s介紹及與docker搭建叢集K8SDocker
- Hadoop HA叢集簡單搭建Hadoop
- Zookeeper簡介
- Dubbo+Zookeeper叢集案例
- ActiveMQ+ZooKeeper 叢集整合MQ
- DevOpsSOP 基於阿里雲VPC搭建Storm+Kafka+Zookeeper叢集dev阿里ORMKafka
- swarm mode叢集搭建及簡單概念Swarm
- K8S 搭建 Kafka:2.13-2.6.0 和 Zookeeper:3.6.2 叢集K8SKafka
- 安裝Zookeeper和Kafka叢集Kafka
- ActiveMQ+ZooKeeper 偽叢集整合MQ
- druid.io叢集與tranquility對zookeeper的使用(一)UI
- Windows 10環境簡單搭建ELK叢集Windows