目錄
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即等於文件系統和通知機制。
注意事項:三台機器一定要保證時鐘同步
使用場景 搭建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集羣
- 關閉虛擬機
- 關閉電腦