Zookeeper 的獲取
在 Linux 上安裝 zookeepr 也很簡(jiǎn)單,只需要將 tar 包解壓就可以了感耙。
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
下載到本地,然后通過(guò) ftp 工具上傳至 Linux 中轰豆∑蘼剩或者,使用 wget 命令在 Linux 中直接下載 tar 包乍钻。
[sjl@hadoop102 ~]$wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
zookeeper 的配置文件
- 解壓 tar 包
[sjl@hadoop102 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -c /opt/module/
- 進(jìn)入解壓后的 zookeeper 的 conf 目錄
[sjl@hadoop102 bin]$ cd /opt/module/zookeeper-3.4.10/conf
- 將 zoo_sample.cfg 文件拷貝一份,命名為 zoo.cfg 铭腕, 直接將原來(lái)的文件重命名也可以
[sjl@hadoop102 conf]$ cp zoo_sample.cfg zoo.cfg
重命名
[sjl@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg
- 編輯 zoo.cfg 配置文件
[sjl@hadoop102 conf]$ vim zoo.cfg
- 配置文件內(nèi)容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
#maxClientCnxns=60
# 將多余的注釋刪除后的內(nèi)容
我們需要修改的是 dataDir 的位置银择,不能使用默認(rèn)配置,必須修改累舷。
dataDir=/opt/module/zookeeper-3.4.10/zkdata
保存退出浩考,配置文件修改完成。
zookeepr 的啟動(dòng)與停止
啟動(dòng) zookeeper 需要進(jìn)入到 bin 目錄下被盈,使用 zookeeper 提供的腳本析孽。
./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}
腳本提供的參數(shù),我們使用最多的是:
start | stop | restart | status
- 啟動(dòng) zookeeper
[sjl@hadoop102 bin]$ ./zkServer.sh start
- 查看 zookeeper 狀態(tài)
[sjl@hadoop102 bin]$ ./zkServer.sh status
查看狀態(tài)的輸出日志 standalone(表示單機(jī)版只怎,后面會(huì)介紹集方式)
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper/bin/../conf/zoo.cfg
Mode: standalone
zookeeper 的客戶端使用
- 啟動(dòng) zookeeper 客戶端
在 bin 目錄中 使用 zkCli.sh 腳本
[sjl@hadoop102 bin]$ ./zkCli.sh
- 查看幫助參數(shù)
鍵入 h袜瞬,可以查看命令的列表
[zk: localhost:2181(CONNECTED) 0] h
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
可以使用 ./zkCli.sh -server host:port 的方式,連接別的 zookeeper 服務(wù)端尝盼。
比如:在 windows 端,可以運(yùn)行 zkCli.cmd -server 192.168.211.102:2181 連接到我的 Linux 端的 zookeeper 服務(wù)端佑菩。(常用的方式)
- 查看節(jié)點(diǎn)
zookeeper 是從 / 根節(jié)點(diǎn)開(kāi)始的盾沫。
[zk: localhost:2181(CONNECTED) 1] ls /
- 創(chuàng)建節(jié)點(diǎn)
創(chuàng)建永久節(jié)點(diǎn)
[zk: localhost:2181(CONNECTED) 1] create /sjl "sjl"
創(chuàng)建永久帶序號(hào)節(jié)點(diǎn)
[zk: localhost:2181(CONNECTED) 1] create -s /sjl_01 "sjl_01"
創(chuàng)建臨時(shí)節(jié)點(diǎn)
[zk: localhost:2181(CONNECTED) 4] create -e /sjl_01 "sjl_02"
創(chuàng)建臨時(shí)帶序號(hào)節(jié)點(diǎn)
zk: localhost:2181(CONNECTED) 5] create -s -e /sjl_03 "sjl_03"
- 查看節(jié)點(diǎn)
[zk: localhost:2181(CONNECTED) 6] ls /
[sjl_030000000004, sjl_010000000002, zookeeper, sjl, hadoop-ha, sjl_01]
其中 sjl_030000000004 是創(chuàng)建的臨時(shí)帶序號(hào)節(jié)點(diǎn)
sjl_01 是臨時(shí)節(jié)點(diǎn)
sjl_010000000002 是永久帶序號(hào)節(jié)點(diǎn)
sjl 是永久節(jié)點(diǎn)
- 臨時(shí)節(jié)點(diǎn)與永久節(jié)點(diǎn)的區(qū)別
當(dāng) zookeeper 客戶端退出后裁赠,臨時(shí)節(jié)點(diǎn)將會(huì)刪除,而永久節(jié)點(diǎn)不會(huì)被刪除赴精。
# 退出當(dāng)前客戶端
[zk: localhost:2181(CONNECTED) 7] quit
# 再次進(jìn)入
[sjl@hadoop102 bin]$ ./zkCli.sh
# 查看節(jié)點(diǎn)信息
[zk: localhost:2181(CONNECTED) 0] ls /
# 節(jié)點(diǎn)信息
[sjl_010000000002, zookeeper, sjl, hadoop-ha]
可以看到佩捞,兩個(gè)臨時(shí)節(jié)點(diǎn)被刪除了。
zookeeper 的集群模式
zookeeper 集群模式蕾哟,要使用奇數(shù)臺(tái)節(jié)點(diǎn)一忱。
環(huán)境
3 臺(tái) Linux 分別是 hadoop102 hadoop103 hadoop104
非集群模式一樣,上傳 tar 包或者使用 wget 下載 tar 包并解壓谭确。
配置 dataDir 的路徑帘营,并增加集群的配置,主要是增加 myid
server.102=192.168.211.102:2888:3888
server.103=192.168.211.103:2888:3888
server.104=192.168.211.104:2888:3888
配置的格式 server.myid=zookeeper地址:通信端:選舉端口
其中 myid 可以自定義創(chuàng)建 myid 文件
在之前創(chuàng)建的 dataDir 配置的路徑下逐哈,創(chuàng)建一個(gè)文件芬迄,名稱為 myid
[sjl@hadoop102 zkdata]$ vim myid
# 內(nèi)容填寫 102 , 即本臺(tái) zookeeper 的 myid
分別在 103 和 104 上進(jìn)行相同的操作昂秃,創(chuàng)建 myid 文件禀梳,并填寫對(duì)應(yīng)的 myid 的值。
- 啟動(dòng) zookeeper 集群
zookeeper 并沒(méi)有提供群起腳本肠骆,所以需要在每臺(tái) zookeeper 上進(jìn)行單獨(dú)啟動(dòng)算途。
[sjl@hadoop102 bin]$ ./zkServer.sh start
在 102 103 104 上執(zhí)行相同的操作。
再看他們的狀態(tài)
[sjl@hadoop102 bin]$ ./zkServer.sh status
Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
如果是按照 102 103 104 的順序進(jìn)行啟動(dòng)的話蚀腿,會(huì)發(fā)現(xiàn)嘴瓤,103 這臺(tái)節(jié)點(diǎn)的 MOde 為 leader,說(shuō)明此處對(duì)外提供服務(wù)的節(jié)點(diǎn)是 103唯咬。
Java 代碼操作 zookeeper 的 API
github 代碼倉(cāng)庫(kù)
https://github.com/WithoutCause/zookeeper_simple