zkCli使用手册
zkClient命令筆記
connect host:port 連接到其他的zk服務器,例:connect 192.168.174.222:2181
-------------------------------------------------------------------------------------------------------
get path [watch] 獲取某個節點的數據,如果加上watch參數,那么當這個節點內的數據發生變化的時候就會收到通知
例:直接獲取
[zk: localhost:2181(CONNECTED) 2] get /mpcapp/mpc3
789
cZxid = 0x4a00000057//創建時候的id
ctime = Wed Nov 30 15:32:16 CST 2016//創建時間
mZxid = 0x4a00000057//修改時候的id
mtime = Wed Nov 30 15:32:16 CST 2016//修改時間
pZxid = 0x4a00000057//持久化version
cversion = 0//創建時候的version
dataVersion = 0//修改后的version,每次修改這個version都會改變,剛創建的時候和cversion一樣
aclVersion = 0//###########################################
ephemeralOwner = 0x0//是否是永久的(有永久節點和臨時節點之分)
dataLength = 3//數據的長度
numChildren = 0//子節點數量
例:獲取的時候帶上watch參數,這時候改變參數的內容(通過另外一個客戶端)
[zk: localhost:2181(CONNECTED) 4] get /mpcapp/mpc3 watch
789
cZxid = 0x4a00000057
ctime = Wed Nov 30 15:32:16 CST 2016
mZxid = 0x4a00000057
mtime = Wed Nov 30 15:32:16 CST 2016
pZxid = 0x4a00000057
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
如上,首先返回了數據,這時候在另一個客戶端改變內容
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/mpcapp/mpc3
打印出了內容改變的事件,這就是zookeeper給我們提供的監聽功能了。
---------------------------------------------------------------------------------------------------------------------------------------
ls path [watch] 列出某個節點的子節點,如果加上watch,那么監聽該節點的子節點的變化,比如多一個子節點,少了一個子節點的事件都會被監聽到
例:直接列出某個節點的子節點
[zk: localhost:2181(CONNECTED) 5] ls /mpcapp
[mpc3]
例:加上watch參數
[zk: localhost:2181(CONNECTED) 6] ls /mpcapp watch
[mpc3]
然后給目錄下面增加一個節點
[zk: localhost:2181(CONNECTED) 7]?
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/mpcapp
打印出了子節點改變事件。 需要注意的是,在get和ls中使用watch的話永遠只注冊一次監聽,也就是說內容改變一次后或者子節點改變一次后監聽到了事件,在發生改變的話就不能監聽到事件了
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set path data [version] 修改某個節點的數據,這個version參數是指你要修改的節點的數據的當前的version也就是dataVersion,如果兩個version不一致會報錯
例:[zk: localhost:2181(CONNECTED) 1] set /mpcapp/mpc2 aaa
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000064
mtime = Wed Nov 30 16:11:54 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
例:加上version
[zk: localhost:2181(CONNECTED) 4] set /mpcapp/mpc2 aaa 1
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000067
mtime = Wed Nov 30 16:14:07 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
剛才修改過一次,數據的dataVersion是1,所以在調用命令的時候也用1
-----------------------------------------------------------------------
rmr path 刪除某個節點,并刪除該節點下的所有子節點
-------------------------------------------------------------------------------------
setquota -n|-b val path 為某個節點設置配額(所謂的配額是指該節點的最大子節點數n,或者該節點的最大數據值的長度v) val就是要設置的配額的值
例:設置子節點最大數
[zk: localhost:2181(CONNECTED) 6] setquota -n 2 /mpcapp
Comment: the parts are option -n val 2 path /mpcapp
例:設置數據最大長度
[zk: localhost:2181(CONNECTED) 20] setquota -b 100 /mpcapp ? ??
Comment: the parts are option -b val 100 path /mpcapp
#這里遇到的問題是,一個節點只能設置n或者b不能同時設置n和b;設置了n的話b為-1,設置了b的話n為-1;待查明原因
#這里設置了最大值以后,設置超過最大值的子節點數量或者數據長度也能夠添加成功,但是會在但是會在${dataDir}/zookeeper.out中記錄警告信息
---------------------------------------------------------------------------------
listquota path 列出指定節點的最大值限制
例:[zk: localhost:2181(CONNECTED) 23] listquota /mpcapp ? ? ? ? ??
absolute path is /zookeeper/quota/mpcapp/zookeeper_limits
Output quota for /mpcapp count=-1,bytes=100
Output stat for /mpcapp count=3,bytes=9
-------------------------------------------------------------------------------------
delquota [-n|-b] path 刪除指定節點的子節點最大值或者數據長度最大值
--------------------------------------------------------------------------------------------
quit 退出
-----------------------------------------------------------------------------
printwatches on|off 這個命令執行不了,不知道為什么
------------------------------------------------------------------------------------------
create [-s] [-e] path data acl 創建一個節點,帶-s那么這是一個臨時節點,在斷開連接后就銷毀,-e就會給創建的節點上面加上序列號(每個目錄有自己獨立的序列號) path是節點的路徑 data是節點的值
acl是節點的權限控制
權限主要有:
CREATE : 創建子節點
READ : 獲取節點數據和子節點列表
WRITE : 更新節點數據
DELETE : 刪除子節點
ADMIN : 設置節點ACL的權限
與授權相關的幾個概念:
shchema:權限模式,有IP和digest兩種
ID:授權對象?
schema為IP時,該值為具體的IP地址
scheme為digest時,該值為 userName:base64(sha1(userName:password))
zookeeper的javaAPI提供了一個工具類org.apache.zookeeper.server.auth.DigestAuthenticationProvider 可以快速生成加密的密文
permission:權限,指的就是上面所說的五種權限
最終的組合為: schema + ID + permission
例:創建節點
[zk: localhost:2181(CONNECTED) 31] create /mpcapp/mpc4 123
Created /mpcapp/mpc4
這個節點是永久的,斷開連接也不會刪除
例:創建臨時節點//臨時節點是不能有子節點的
[zk: localhost:2181(CONNECTED) 32] create -e /mpcapp/mpc5 555555
Created /mpcapp/mpc5
例:創建序號節點
[zk: localhost:2181(CONNECTED) 33] create -s /mpcapp/mpc6 55555544
Created /mpcapp/mpc60000000006
[zk: localhost:2181(CONNECTED) 34] create -s /mpcapp/mpc7 55555544
Created /mpcapp/mpc70000000007
[zk: localhost:2181(CONNECTED) 35]?
例:創建帶有權限的節點
[zk: localhost:2181(CONNECTED) 35] create /mpcapp/mpc8 ?88888 ip:192.168.174.139:crwda
Created /mpcapp/mpc8
[zk: localhost:2181(CONNECTED) 37] create /mpcapp/mpc9 99999 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad ??
Created /mpcapp/mpc9
----------------------------------------------------------------------------------------------------------------------------------
stat path [watch] 查看某個節點的狀態信息 加上watch參數后就會監聽狀態改變
例:
[zk: localhost:2181(CONNECTED) 38] stat /mpcapp
cZxid = 0x4a00000054
ctime = Wed Nov 30 15:31:01 CST 2016
mZxid = 0x4a00000054
mtime = Wed Nov 30 15:31:01 CST 2016
pZxid = 0x4a0000007d
cversion = 12
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 8
--------------------------------------------------------------------------------------
close 關閉連接,一般退出的時候先關閉連接,然后quit
----------------------------------------------------------------------------------------
ls2 path [watch] 和ls用法功能一樣,唯一的區別就是列出子節點的同時列出了該節點的狀態信息
----------------------------------------------------------------------------------------------
history 列出命令歷史
----------------------------------------------------------------------------------------------------------
redo cmdno 該命令可以重新執行指定命令編號的歷史命令,命令編號可以通過history查看
----------------------------------------------------------------------------------------
getAcl path 獲取某個節點的授權信息
例:
[zk: mpc6:2181(CONNECTED) 48] getAcl /mpcapp/mpc8
'ip,'192.168.174.139
: cdrwa
[zk: mpc6:2181(CONNECTED) 49] getAcl /mpcapp/mpc9
'digest,'hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=
: cdrwa
----------------------------------------------------------
setAcl path acl 設置某個節點的授權信息
例:
[zk: localhost:2181(CONNECTED) 0] setAcl /mpcapp/mpc2 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad?
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000068
mtime = Wed Nov 30 16:14:17 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 3
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
-------------------------------------------------------------------------------------------
delete path [version] 刪除一個節點,該節點下不能有子節點;version的就是指定dataVersion不一致不能刪除
-----------------------------------------------------------------------------------------------------------------
addauth scheme auth?
? ? schema:可取ip或digest
? ? auth
? ? ? ? schema==digest時為 userName:password
? ? ? ? schema==ip時為
------------------------------------------------------------------------------
sync path 立刻在服務器之間同步信息(個人理解是這樣的,還沒有確定)
connect host:port 連接到其他的zk服務器,例:connect 192.168.174.222:2181
-------------------------------------------------------------------------------------------------------
get path [watch] 獲取某個節點的數據,如果加上watch參數,那么當這個節點內的數據發生變化的時候就會收到通知
例:直接獲取
[zk: localhost:2181(CONNECTED) 2] get /mpcapp/mpc3
789
cZxid = 0x4a00000057//創建時候的id
ctime = Wed Nov 30 15:32:16 CST 2016//創建時間
mZxid = 0x4a00000057//修改時候的id
mtime = Wed Nov 30 15:32:16 CST 2016//修改時間
pZxid = 0x4a00000057//持久化version
cversion = 0//創建時候的version
dataVersion = 0//修改后的version,每次修改這個version都會改變,剛創建的時候和cversion一樣
aclVersion = 0//###########################################
ephemeralOwner = 0x0//是否是永久的(有永久節點和臨時節點之分)
dataLength = 3//數據的長度
numChildren = 0//子節點數量
例:獲取的時候帶上watch參數,這時候改變參數的內容(通過另外一個客戶端)
[zk: localhost:2181(CONNECTED) 4] get /mpcapp/mpc3 watch
789
cZxid = 0x4a00000057
ctime = Wed Nov 30 15:32:16 CST 2016
mZxid = 0x4a00000057
mtime = Wed Nov 30 15:32:16 CST 2016
pZxid = 0x4a00000057
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
如上,首先返回了數據,這時候在另一個客戶端改變內容
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/mpcapp/mpc3
打印出了內容改變的事件,這就是zookeeper給我們提供的監聽功能了。
---------------------------------------------------------------------------------------------------------------------------------------
ls path [watch] 列出某個節點的子節點,如果加上watch,那么監聽該節點的子節點的變化,比如多一個子節點,少了一個子節點的事件都會被監聽到
例:直接列出某個節點的子節點
[zk: localhost:2181(CONNECTED) 5] ls /mpcapp
[mpc3]
例:加上watch參數
[zk: localhost:2181(CONNECTED) 6] ls /mpcapp watch
[mpc3]
然后給目錄下面增加一個節點
[zk: localhost:2181(CONNECTED) 7]?
WATCHER::
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/mpcapp
打印出了子節點改變事件。 需要注意的是,在get和ls中使用watch的話永遠只注冊一次監聽,也就是說內容改變一次后或者子節點改變一次后監聽到了事件,在發生改變的話就不能監聽到事件了
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set path data [version] 修改某個節點的數據,這個version參數是指你要修改的節點的數據的當前的version也就是dataVersion,如果兩個version不一致會報錯
例:[zk: localhost:2181(CONNECTED) 1] set /mpcapp/mpc2 aaa
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000064
mtime = Wed Nov 30 16:11:54 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
例:加上version
[zk: localhost:2181(CONNECTED) 4] set /mpcapp/mpc2 aaa 1
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000067
mtime = Wed Nov 30 16:14:07 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
剛才修改過一次,數據的dataVersion是1,所以在調用命令的時候也用1
-----------------------------------------------------------------------
rmr path 刪除某個節點,并刪除該節點下的所有子節點
-------------------------------------------------------------------------------------
setquota -n|-b val path 為某個節點設置配額(所謂的配額是指該節點的最大子節點數n,或者該節點的最大數據值的長度v) val就是要設置的配額的值
例:設置子節點最大數
[zk: localhost:2181(CONNECTED) 6] setquota -n 2 /mpcapp
Comment: the parts are option -n val 2 path /mpcapp
例:設置數據最大長度
[zk: localhost:2181(CONNECTED) 20] setquota -b 100 /mpcapp ? ??
Comment: the parts are option -b val 100 path /mpcapp
#這里遇到的問題是,一個節點只能設置n或者b不能同時設置n和b;設置了n的話b為-1,設置了b的話n為-1;待查明原因
#這里設置了最大值以后,設置超過最大值的子節點數量或者數據長度也能夠添加成功,但是會在但是會在${dataDir}/zookeeper.out中記錄警告信息
---------------------------------------------------------------------------------
listquota path 列出指定節點的最大值限制
例:[zk: localhost:2181(CONNECTED) 23] listquota /mpcapp ? ? ? ? ??
absolute path is /zookeeper/quota/mpcapp/zookeeper_limits
Output quota for /mpcapp count=-1,bytes=100
Output stat for /mpcapp count=3,bytes=9
-------------------------------------------------------------------------------------
delquota [-n|-b] path 刪除指定節點的子節點最大值或者數據長度最大值
--------------------------------------------------------------------------------------------
quit 退出
-----------------------------------------------------------------------------
printwatches on|off 這個命令執行不了,不知道為什么
------------------------------------------------------------------------------------------
create [-s] [-e] path data acl 創建一個節點,帶-s那么這是一個臨時節點,在斷開連接后就銷毀,-e就會給創建的節點上面加上序列號(每個目錄有自己獨立的序列號) path是節點的路徑 data是節點的值
acl是節點的權限控制
權限主要有:
CREATE : 創建子節點
READ : 獲取節點數據和子節點列表
WRITE : 更新節點數據
DELETE : 刪除子節點
ADMIN : 設置節點ACL的權限
與授權相關的幾個概念:
shchema:權限模式,有IP和digest兩種
ID:授權對象?
schema為IP時,該值為具體的IP地址
scheme為digest時,該值為 userName:base64(sha1(userName:password))
zookeeper的javaAPI提供了一個工具類org.apache.zookeeper.server.auth.DigestAuthenticationProvider 可以快速生成加密的密文
permission:權限,指的就是上面所說的五種權限
最終的組合為: schema + ID + permission
例:創建節點
[zk: localhost:2181(CONNECTED) 31] create /mpcapp/mpc4 123
Created /mpcapp/mpc4
這個節點是永久的,斷開連接也不會刪除
例:創建臨時節點//臨時節點是不能有子節點的
[zk: localhost:2181(CONNECTED) 32] create -e /mpcapp/mpc5 555555
Created /mpcapp/mpc5
例:創建序號節點
[zk: localhost:2181(CONNECTED) 33] create -s /mpcapp/mpc6 55555544
Created /mpcapp/mpc60000000006
[zk: localhost:2181(CONNECTED) 34] create -s /mpcapp/mpc7 55555544
Created /mpcapp/mpc70000000007
[zk: localhost:2181(CONNECTED) 35]?
例:創建帶有權限的節點
[zk: localhost:2181(CONNECTED) 35] create /mpcapp/mpc8 ?88888 ip:192.168.174.139:crwda
Created /mpcapp/mpc8
[zk: localhost:2181(CONNECTED) 37] create /mpcapp/mpc9 99999 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad ??
Created /mpcapp/mpc9
----------------------------------------------------------------------------------------------------------------------------------
stat path [watch] 查看某個節點的狀態信息 加上watch參數后就會監聽狀態改變
例:
[zk: localhost:2181(CONNECTED) 38] stat /mpcapp
cZxid = 0x4a00000054
ctime = Wed Nov 30 15:31:01 CST 2016
mZxid = 0x4a00000054
mtime = Wed Nov 30 15:31:01 CST 2016
pZxid = 0x4a0000007d
cversion = 12
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 8
--------------------------------------------------------------------------------------
close 關閉連接,一般退出的時候先關閉連接,然后quit
----------------------------------------------------------------------------------------
ls2 path [watch] 和ls用法功能一樣,唯一的區別就是列出子節點的同時列出了該節點的狀態信息
----------------------------------------------------------------------------------------------
history 列出命令歷史
----------------------------------------------------------------------------------------------------------
redo cmdno 該命令可以重新執行指定命令編號的歷史命令,命令編號可以通過history查看
----------------------------------------------------------------------------------------
getAcl path 獲取某個節點的授權信息
例:
[zk: mpc6:2181(CONNECTED) 48] getAcl /mpcapp/mpc8
'ip,'192.168.174.139
: cdrwa
[zk: mpc6:2181(CONNECTED) 49] getAcl /mpcapp/mpc9
'digest,'hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=
: cdrwa
----------------------------------------------------------
setAcl path acl 設置某個節點的授權信息
例:
[zk: localhost:2181(CONNECTED) 0] setAcl /mpcapp/mpc2 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad?
cZxid = 0x4a0000005e
ctime = Wed Nov 30 16:06:07 CST 2016
mZxid = 0x4a00000068
mtime = Wed Nov 30 16:14:17 CST 2016
pZxid = 0x4a0000005e
cversion = 0
dataVersion = 3
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
-------------------------------------------------------------------------------------------
delete path [version] 刪除一個節點,該節點下不能有子節點;version的就是指定dataVersion不一致不能刪除
-----------------------------------------------------------------------------------------------------------------
addauth scheme auth?
? ? schema:可取ip或digest
? ? auth
? ? ? ? schema==digest時為 userName:password
? ? ? ? schema==ip時為
------------------------------------------------------------------------------
sync path 立刻在服務器之間同步信息(個人理解是這樣的,還沒有確定)
總結
- 上一篇: 当软件失去灵魂
- 下一篇: java中如何将数字转换成字符串(int