Zookeeper 完全分布搭建
目錄
Zookeeper 完全分布搭建
一: 安裝工具準備:
二: zookeeper 基本知識
三: zookeeper集群完全分布式安裝
四: zookeeper基本操作命令使用
五: zookeeper集群啟動shell腳本
六: 總結
一: 安裝工具準備:
apache-zookeeper-3.5.5-bin.tar
鏈接:https://pan.baidu.com/s/191zqPJr1ZXItAFUp6rGnfQ
提取碼:aoye
二: zookeeper 基本知識
1. 介紹:
zookeeper 是一個開源的分布式的apache專案,為分布式應用提供協調服務,
zookeeper = 檔案系統 + 通知機制,
2. 作用:
管理大資料體系中的集群以及所有框架
3. 設計理念:
是一個基于觀察者模式設計的分布式服務管理框架,
- 負責存盤和管理關鍵資料(存盤節點元資料資訊)
- 然后接受觀察者的注冊
- 一旦這些資料狀態改變,zookeeper將負責通知已經在zookeeper上注冊的觀察者做出相應的反應,
4. 特點:
- 一個領導者(leader),多個跟隨者(follow)組成的集群
- 集群中只要有半數節點存活,zookeeper集群就能正常服務
- 全域資料一致【每個server保存同一份相同資料副本,client無論連接到那個server,資料都一致,】
- 更新請求順序進行 【來著同一個client的更新請求按發送順序依次執行】
- 資料更新原子性,一次資料更新要么是成功,要么是失敗
- 實時性,在一定時間范圍內,client能讀取最新資料
5. zookeeper內部原理:【半數機制】
半數機制: 集群中半數以上機器存活,集群可用,所以zookeeper適合安裝奇數臺服務器,
選舉機制:
zookeeper 默認的演算法是 FastLeaderElection,采用投票數大于半數則勝出的邏輯,
假設目前有3臺服務器,每臺服務器均沒有資料,它們的編號分別是1,2,3按編號依次啟動,它們的選擇舉程序如下:
服務器 1 啟動,給自己投票,然后發投票資訊,由于其它機器還沒有啟動所以它收不到反饋資訊,服務器 1 的狀態一直屬于 Looking,
服務器 2 啟動,給自己投票,同時與之前啟動的服務器 1 交換結果,由于服務器 2 的編號大所以服務器 2 勝出,但此時投票數正好大于半數,所以服務器2成為領導者leader,
服務器 3 啟動,給自己投票,同時與之前啟動的服務器1,2交換資訊,由于服務器2已結勝出,所以服務器3只能是跟隨者follow,
三: zookeeper集群完全分布式安裝
1. 安裝前保證hadoop集群已結安裝好并啟動成功: hadoop全分布安裝教程
2. 上傳zookeeper安裝包到hadoop主節點,后配置完畢再分發到各個節點
3. 解壓安裝包到自定義的相應目錄并改名【以下演示為/opt目錄】
tar -zxvf zookeeper-3.4.10.tar.gz -C /opt 【/opt是自己解壓的目錄】
mv zookeeper-3.4.10 zookeeper 【改名】

4. 進入解壓目錄,創建一個data目錄用于存放資料
mkdir data
5. 進入data目錄創建檔案myid,編輯1,退出【后續節點2就編輯為2,節點3就編輯為3】
touch myid
6. 進入zookeeper解壓目錄下的conf目錄,復制zoo_sample.cfg檔案為zoo.cfg,再進入編輯
cp zoo_sample.cfg zoo.cfg 【復制并重命名檔案】
vi zoo.cfg 【編輯檔案zoo.cfg】
編輯如下:
dataDir=/opt/zookeeper/data
server.1=主機1 ip地址:2888:3888
server.2=主機2 ip地址:2888:3888
server.3=主機3 ip地址:2888:3888

7. 分發zookeeper安裝包到從節點
scp -r zookeeper root@192.168.217.130:/opt 【從節點2】
scp -r zookeeper root@192.168.217.131:/opt 【從節點3】
8. 在從節點2編輯myid檔案內容為2,從節點3編輯myid檔案內容為3

9. 啟動,進入bin目錄,如下:

./zkServer.sh start 【啟動服務端,三臺機器都需要 一 一 的啟動,后續給出腳本啟動!】
./zkCli.sh 【啟動客戶端】
./zkServer.sh status 【查看zookeeper狀態】
./zkServer.sh stop 【關閉zookeeper】
10. 我的啟動順序是主機1,主機2,主機3,所有安裝半數機制,最終leader為主機2,跟隨者為主機1和主機3,


11. 啟動客戶端: ./zkCli.sh
四: zookeeper基本操作命令使用
help : 顯示所有操作命令,
Ls /具體要查看的目錄 : 查看具體目錄下的資訊,
ls / : 查看當前znode中所包含的內容,也就是zookeeper中所存盤的集群元資訊,
create: 在當前目錄創建普通節點, 【 例如創建節點并賦值:create /ao “hello” 】
create -e :加一個引數“e”,表示短暫的創建節點,重新啟動后自動消失,
create -s :加一個引數“s”,表示創建一個帶序號的節點,沒有節點的話,自動從0開始,
get : 獲取節點的值, 【 例如:get /ao 】
set : 修改或者添加節點的值, 【 例如:set /ao “需要添加或修改的內容,自動覆寫”
delete : 洗掉節點,(deleteall表示洗掉目錄,)
Stat : 查看節點狀態,
watch: 注冊監聽,在一個節點是注冊監聽,但在另一個節點修改被監聽的值時,該節點將得到反饋,(get : 監聽節點內容變化 ls : 監聽節點數目,也就是目錄下檔案數變化,)
五: zookeeper集群啟動shell腳本
1. 進入根目錄下的bin目錄下:cd /bin
2. 創建檔案zookeeper-start: touch zookeeper-start
3. 編輯內容如下:
#!/bin/bash
echo “正在啟動zookeeper集群,請稍后....”for i in 1 2 3
do
ssh bigdata$i "source /etc/profile; /opt/zookeeper/bin/zkServer.sh start"
done

4. 設定可執行權限,我只做學習而用,所以直接設定為最高權限:
chmod 777 zookeeper-start
5. 接下來啟動zookeeper就不用各個機器去各個啟動,直接用輸入zookeeper-start啟動即可,
小提示: 對于zookeeper集群的關閉和查看狀態同以上道理,改陳述句最后的start為stop和status即可,方便對zookeeper集群進行操作,
六: 總結
以上為zookeeper的集群安裝,簡單命令使用,以及撰寫shell腳本啟動集群的簡單步驟,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276732.html
標籤:其他
上一篇:在阿里(02):阿里入職記
