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中編號對應的命令