1.集群規(guī)劃
在hadoop101、hadoop102和hadoop103三個(gè)節(jié)點(diǎn)上部署Zookeeper。
| 服務(wù)器 hadoop101 | 服務(wù)器 hadoop102 | 服務(wù)器 hadoop103 | |
|---|---|---|---|
| Zookeeper | Zookeeper | Zookeeper | Zookeeper |
2.解壓安裝
將 Zookeeper 安裝包上傳到服務(wù)器的 /opt/software 目錄下
解壓Zookeeper安裝包到/opt/module/目錄下
[yobhel@hadoop101 software]$ tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
切換到 /opt/module 目錄,將 apache-zookeeper-3.5.7-bin目錄名稱修改為zookeeper-3.5.7
[yobhel@hadoop101 module]$ mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7
同步/opt/module/zookeeper-3.5.7目錄內(nèi)容到hadoop102、hadoop103
[yobhel@hadoop101 module]$ xsync zookeeper-3.5.7/
3.配置服務(wù)器編號(hào)
a. 在/opt/module/zookeeper-3.5.7/這個(gè)目錄下創(chuàng)建zkData
[yobhel@hadoop101 zookeeper-3.5.7]$ mkdir zkData
b.在/opt/module/zookeeper-3.5.7/zkData目錄下創(chuàng)建一個(gè)myid的文件
[yobhel@hadoop101 zkData]$ vim myid
添加myid文件,注意一定要在linux里面創(chuàng)建,在notepad++里面很可能亂碼
在文件中添加與server對(duì)應(yīng)的編號(hào):
1
c.拷貝配置好的zookeeper到其他機(jī)器上
[yobhel@hadoop101 zkData]$ xsync ../zkData
并分別在hadoop102、hadoop103上修改myid文件中內(nèi)容為2、3
4.配置zoo.cfg文件
(1)拷貝 /opt/module/zookeeper-3.5.7/conf 這個(gè)目錄下的 zoo_sample.cfg 為 zoo.cfg
[yobhel@hadoop101 conf]$ cp zoo_sample.cfg zoo.cfg
(2)打開zoo.cfg文件
[yobhel@hadoop101 conf]$ vim zoo.cfg
修改數(shù)據(jù)存儲(chǔ)路徑配置
dataDir=/opt/module/zookeeper-3.5.7/zkData
增加如下配置
#######################cluster##########################
server.1=hadoop101:2888:3888
server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
(3)同步zoo.cfg配置文件
[yobhel@hadoop101 conf]$ xsync zoo.cfg
(4)配置參數(shù)解讀
server.A=B:C:D。
- A是一個(gè)數(shù)字,表示這個(gè)是第幾號(hào)服務(wù)器;
集群模式下配置一個(gè)文件myid,這個(gè)文件在dataDir目錄下,這個(gè)文件里面有一個(gè)數(shù)據(jù)就是A的值,Zookeeper啟動(dòng)時(shí)讀取此文件,拿到里面的數(shù)據(jù)與zoo.cfg里面的配置信息比較從而判斷到底是哪個(gè)server。 - B是這個(gè)服務(wù)器的地址;
- C是這個(gè)服務(wù)器Follower與集群中的Leader服務(wù)器交換信息的端口;
- D是萬(wàn)一集群中的Leader服務(wù)器掛了,需要一個(gè)端口來(lái)重新進(jìn)行選舉,選出一個(gè)新的Leader,而這個(gè)端口就是用來(lái)執(zhí)行選舉時(shí)服務(wù)器相互通信的端口。
5.集群操作
(1)分別啟動(dòng)Zookeeper
[atguigu@hadoop101 zookeeper-3.5.7]$ bin/zkServer.sh start
[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh start
[atguigu@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
(2)查看狀態(tài)
[atguigu@hadoop101 zookeeper-3.5.7]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: follower
[atguigu@hadoop102 zookeeper-3.5.7]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: leader
[atguigu@hadoop103 zookeeper-3.4.5]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: follower
6.客戶端命令行操作
| 命令基本語(yǔ)法 | 功能描述 |
|---|---|
| help | 顯示所有操作命令 |
| ls path | 使用 ls 命令來(lái)查看當(dāng)前 znode 的子節(jié)點(diǎn) -w 監(jiān)聽子節(jié)點(diǎn)變化 -s 附加次級(jí)信息 |
| create | 普通創(chuàng)建 -s 含有序列 -e 臨時(shí)(重啟或者超時(shí)消失) |
| get path | 獲得節(jié)點(diǎn)的值 -w 監(jiān)聽節(jié)點(diǎn)內(nèi)容變化 -s 附加次級(jí)信息 |
| set | 設(shè)置節(jié)點(diǎn)的具體值 |
| stat | 查看節(jié)點(diǎn)狀態(tài) |
| delete | 刪除節(jié)點(diǎn) |
| deleteall | 遞歸刪除節(jié)點(diǎn) |
啟動(dòng)客戶端
[yobhel@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh
7.ZK集群?jiǎn)?dòng)停止腳本
1)在hadoop101的/home/yobhel/bin目錄下創(chuàng)建腳本
[yobhel@hadoop101 bin]$ vim zk.sh
在腳本中編寫如下內(nèi)容
#!/bin/bash
case $1 in
"start"){
for i in hadoop101 hadoop102 hadoop103
do
echo ---------- zookeeper $i 啟動(dòng) ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh start"
done
};;
"stop"){
for i in hadoop101 hadoop102 hadoop103
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh stop"
done
};;
"status"){
for i in hadoop101 hadoop102 hadoop103
do
echo ---------- zookeeper $i 狀態(tài) ------------
ssh $i "/opt/module/zookeeper-3.5.7/bin/zkServer.sh status"
done
};;
esac
2)增加腳本執(zhí)行權(quán)限
[yobhel@hadoop101 bin]$ chmod +x zk.sh
3)Zookeeper集群?jiǎn)?dòng)腳本
[yobhel@hadoop101 module]$ zk.sh start
4)Zookeeper集群停止腳本
[yobhel@hadoop101 module]$ zk.sh stop