目錄

Zookeeper 是一個開源的分佈式協調服務框架 ,主要用來解決分佈式集羣中應用系統的一致性問題和數據管理問題。可以從設計角度認知Zookeeper是一個基於觀察者模式設計的分佈式服務管理框架,它負責存儲和管理大家都關心的數據,然後接受觀察者的註冊,一旦這些數據發生變化,Zookeeper將負責通知註冊在其之上的那些觀察者作出相應的操作,Zookeeper即等於文件系統和通知機制。

1.zookeeper的服務角色

2.數據存儲

3.數據讀取

4.zookeeper集羣安裝

1 下載zookeeper的壓縮包

2 解壓

3 修改配置文件

4 添加myid配置

5 安裝包分發並修改myid的值 分佈式

6 配置環境變量

7 三台機器啓動zookeeper服務

8 如何關閉zookeeper集羣


Zookeeper詳細教程、分佈式協調服務原理_#分佈式

Zookeeper 是一個開源的分佈式協調服務框架 ,主要用來解決分佈式集羣中應用系統的一致性問題和數據管理問題。可以從設計角度認知Zookeeper是一個基於觀察者模式設計的分佈式服務管理框架,它負責存儲和管理大家都關心的數據,然後接受觀察者的註冊,一旦這些數據發生變化,Zookeeper將負責通知註冊在其之上的那些觀察者作出相應的操作,Zookeeper即等於文件系統和通知機制。

注意事項:三台機器一定要保證時鐘同步

使用場景 搭建hadoop高可用

分佈式協調服務 管理其他服務

搭建高可用時,需要至少兩個hadoop服務

一主一備;主服務對外提供業務功能 備用等待主服務不可用器,啓用備用服務對外提供業務功能

0 表示 宕機

1 表是正在運行

1.zookeeper的服務角色
  • leader 管理者 負責管理follower,處理所的事務請求(保存,修改,刪除)
  • follower 追隨者 負責選舉和數據的同步和獲取
  • observer 觀察者 數據的同步和獲取 需要在配置文件指定才會生成(優化的讀取數據的一張形式)
2.數據存儲

zookeeper在進行數據存儲時,所有事務都會交給leader角色處理,leader發起投票,只要超過一般的follower同意,leader就會將數據同步給所有的follower。這是所有follower的數據時一致的

  • 一致性 所有的follower數據是一樣的
  • 順序性 數據的請求執行的按照順序執行
  • 原子性 每個請求都保證完整執行,不會被中斷,
  • 實時性 數據最終會同步給所有的follower
3.數據讀取

訪問任意一個服務都可以

4.zookeeper集羣安裝
1 下載zookeeper的壓縮包
  • 下載網址
  • 我們在這個網址下載我們使用的zk版本為apache-zookeeper-3.6.2
  • 下載完成之後,上傳到我們的node01的/itheima/soft路徑下準備進行安裝
2 解壓
  • node01執行以下命令解壓zookeeper的壓縮包到node01服務器的/itheima/install路徑下去,然後準備進行安裝
cd /itheima/soft

tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz  -C /itheima/install/
3 修改配置文件
  • 第一台機器修改配置文件
cd /itheima/install/apache-zookeeper-3.6.2-bin/conf

mkdir -p /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas

cp zoo_sample.cfg zoo.cfg
  • vim zoo.cfg修改文件,修改如下屬性值
dataDir=/itheima/install/apache-zookeeper-3.6.2-bin/zkdatas

autopurge.snapRetainCount=3

autopurge.purgeInterval=1

#文件末尾增加如下三行
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
4 添加myid配置
  • 在第一台機器的/itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/這個路徑下創建一個文件,文件名為myid ,文件內容為1
echo 1 >  /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid
5 安裝包分發並修改myid的值 分佈式
  • 第一台機器上面執行以下兩個命令
scp -r /itheima/install/apache-zookeeper-3.6.2-bin/ node02:/itheima/install/

scp -r /itheima/install/apache-zookeeper-3.6.2-bin/ node03:/itheima/install/
  • ==第二台==機器上修改myid的值為2;直接在第二台機器任意路徑執行以下命令
echo 2 > /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid
  • ==第三台==機器上修改myid的值為3;直接在第三台機器任意路徑執行以下命令
echo 3 > /itheima/install/apache-zookeeper-3.6.2-bin/zkdatas/myid
6 配置環境變量
  • 三台節點都配置/etc/profile文件
sudo vim /etc/profile
export ZK_HOME=/itheima/install/apache-zookeeper-3.6.2-bin
export PATH=$PATH:$ZK_HOME/bin
  • 三台節點,讓新添環境變量生效(hadoop用户下執行)
source /etc/profile
7 三台機器啓動zookeeper服務
  • 三台機器啓動zookeeper服務;這個命令三台機器都要執行
zkServer.sh start
  • 查看啓動狀態
zkServer.sh status

一個zkServer的狀態要麼是follower,要麼是leader

三個節點中,一個節點為leader,另外兩個為follower,類似下圖

  • jps每個服務器上有一個QuorumPeerMain進程
8 如何關閉zookeeper集羣
  • 三個節點運行
zkServer.sh stop

==提醒:如果要關閉電腦時,清一定要按照以下順序操作,否則集羣可能會出問題==

  • 關閉zookeeper集羣
  • 關閉虛擬機
  • 關閉電腦