04_zookeeper客戶端使用及常用命令


zookeeper客戶端的使用

(1)   首先找到zookeeper自帶客戶端的位置

簡單來說,zookeeper自帶客戶端位於zookeeper安裝目錄的bin目錄下,以我的為例:

 

 

(2)   運行zkCli.sh,建立和zookeeper服務端的連接

1 # ./zkCli.sh –timeout 100 –r –server ip:port
1 -timeout 100     timeout指定當前client與zkserver的連接超時時間(毫秒),如果在給定時間內zkserver沒有client端發來的心跳,則連接失效;
3 -r               只讀模式,Client只讀取zk數據;不指定則Client可以讀和寫
5 -server ip:port  要連接哪一台zkserver,port默認2181. Zk由多台機器組成,連接任意一台看到的zk上的數據都是相同的(統一視圖)

 

正常連接zkserver后,Client上看到的提示信息,最后一行提示信息會表示,已經連接到指定的zkserver,  當前的session id=0(全局內唯一的session)

 

 

(3)   不記得能用哪些命令和zkserver交互,問問它吧

[zk: slave1:2181(CONNECTED) 0] help

Zookeeper提供給Client使用的命令和操作數據庫的命令非常類似,可以簡單歸類為:增、刪、改、查4個大類

 

查詢命令

查詢子節點列表   ls path

和linux命令類似, 將列出絕對路徑path下的所有子節點信息(列出1級,並不遞歸

 

 

查詢節點狀態  stat path

 將列出絕對路徑path對應的znode節點的狀態信息,也就是znode元數據

[zk: slave1:2181(CONNECTED) 0] stat /zookeeper

 

注: pZxid表示該節點的子節點列表,最后一次被更新的時間(事務ID),新增子節點,刪除子節點都會導致pZxid被刷新

 

增強版的ls path       ls2 path

ls2 path返回的信息包括2部分:子節點列表 + 當前節點的stat信息

 

查詢節點保存的數據  get path

列出節點保存的數據,以及節點的元數據(相當於get path內部調用了stat path

 

創建命令

create [-s] [-e] path data acl

path       要創建的znode絕對路徑
data       znode保存的數據
acl        znode的訪問權限
-s         要創建的znode是順序節點
-e         要創建的znode是臨時節點
-s  -e     臨時的順序節點(沒有指定類型則是永久節點)

 

創建永久節點

[zk: slave1:2181(CONNECTED) 0] create /node_1 123     # 永久節點

 

在上一節點的基礎上創建1個臨時子節點

[zk: slave1:2181(CONNECTED) 0] create –e /node_1/node_1_1 456

 

臨時子節點會在client端退出后,被zk自動刪除

[zk: slave1:2181(CONNECTED) 0] quit
# ./zkCli.sh –timeout 5000 –server slave:2181
[zk: slave1:2181(CONNECTED) 0] ls /node_1        #空

 

 

創建1個順序節點,寫入數據123  白色是zk自動添加的序列號,10位數字

[zk: slave1:2181(CONNECTED) 0] create –s /node_1/node_1_1

 

 

再創建1個序列節點相同path,  zk自動添加序列號

 

順序節點會一直保留,client退出zk並不刪除節點

 

 

創建1個臨時順序節點

[zk: slave1:2181(CONNECTED) 0] create –e–s /node_1/node_1_1

Client退出並重新連接zk, 臨時順序節點在Client退出后自動刪除

 

 

修改命令

set path data [version]

version    手工指定znode的數據版本號(version), 默認zk對version自動從0開始累加

第一次修改znode數據,dataversion自動加1

 第二次修改znode數據,dataversion自動加1

第三次修改znode數據,手動寫入的版本號必須和當前版本號相同,否則報錯

 

修改節點數據,並手動寫入當前版本號后,zk還是自動遞增數據版本號

 

總結:如果Client在手工指定版本為當前版本號的基礎上,還是運行出錯,說明期間已經有另外的client對該節點的數據進行了更新

 

刪除命令

rmr path

特點:遞歸刪除

delete  path [version]

特點:刪除的節點不能有子節點

 

 

配額命令

setquota –n|-b value path

Zk允許我們設置znode的數據長度以及子節點個數
*-n  value       設置znode的子節點個數,number
*-b  value       設置znode的數據長度byte

注意:超過配額的子節點可以創建成功,zk只是在log中記錄一條警告信息(-b, -n都是只報警)

Zookeeper安裝目錄下的bin目錄中的zookeeper.out中記錄

 

listquota  path

查看指定znode的配額

 

Stat中的count=自己+子節點個數, bytes=自己+子節點數據長度

delquota –n|-b  path

刪除path表示的znode上指定類型的配額

 

其他命令

[zk] connect host:port    # 連接另一個zkserver

[zk] close                # 關閉connect方式的連接

[zk] history              # 列出執行過的歷史命令

[zk] redo 編號             # 再次執行history中編號對應的命令

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM