zookeeper-04-基本命令

[TOC]

在zookeeper安裝目錄的bin目錄下有名為 zkCli.sh 的文件蝎宇,該文件可以作為客戶端連接到zookeeper弟劲。

1 使用zkCli.sh連接到zookeeper

# 一般語(yǔ)法
./zkCli.sh -timeout 0 -r -server ip:port

# 連接到主機(jī)h1 超時(shí)時(shí)間3秒
./zkCli.sh -timeout 3000 -server h1:2181

# 有類似如下的命令提示符就表示連接成功了
[zk: h1:2181(CONNECTED) 0] 

另外,我們?cè)谇懊嬲f(shuō)過(guò)夫啊。整個(gè)zookeeper的節(jié)點(diǎn)結(jié)構(gòu)就和linux文件系統(tǒng)是一致的函卒。
都是只有一個(gè)最頂層的根節(jié)點(diǎn),其下有若干子節(jié)點(diǎn)撇眯。

隨便敲個(gè)字母就可以顯示出使用幫助了:

[zk: h1:2181(CONNECTED) 1] 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

2 基本命令的使用

在一定角度來(lái)說(shuō)zookeeper是個(gè)存儲(chǔ)數(shù)據(jù)的東西报嵌。
所以他的操作命令大致可以分為增刪改查四類了

2.1 查詢操作

  • ls path [watch]

列出指定節(jié)點(diǎn),類似于linux的ls命令

[zk: h1:2181(CONNECTED) 8] ls /
[zookeeper]
[zk: h1:2181(CONNECTED) 9] ls /zookeeper
[quota]
[zk: h1:2181(CONNECTED) 10] ls /zookeeper/quota
[]
[zk: h1:2181(CONNECTED) 11]
  • stat path [watch]

列出指定節(jié)點(diǎn)的狀態(tài)信息,或者說(shuō)是元數(shù)據(jù)信息

[zk: h1:2181(CONNECTED) 11] stat /
# 節(jié)點(diǎn)被創(chuàng)建時(shí)的事務(wù)ID
cZxid = 0x0 
# 節(jié)點(diǎn)創(chuàng)建時(shí)間
ctime = Thu Jan 01 08:00:00 CST 1970
# 最近一次更新時(shí)的事務(wù)ID
mZxid = 0x0
# 最近一次更新時(shí)間
mtime = Thu Jan 01 08:00:00 CST 1970
# 該節(jié)點(diǎn)的子節(jié)點(diǎn)列表最近一次被修改的事務(wù)ID
# 添加熊榛、刪除子節(jié)點(diǎn)會(huì)影響該值
pZxid = 0x0
# 子節(jié)點(diǎn)版本號(hào)
cversion = -1
# 數(shù)據(jù)版本號(hào)
dataVersion = 0
# ACL版本號(hào)
aclVersion = 0
# 創(chuàng)建臨時(shí)節(jié)點(diǎn)的事務(wù)ID
# 如果是持久節(jié)點(diǎn),則該值為0x0
ephemeralOwner = 0x0
# 當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)長(zhǎng)度
dataLength = 0
# 當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)目
numChildren = 1

[zk: h1:2181(CONNECTED) 12] stat /zookeeper
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: h1:2181(CONNECTED) 13]
  • get path [watch]

可以列出指定節(jié)點(diǎn)的數(shù)據(jù)

get /
get /zookeeper
  • ls2 path [watch]

是ls的升級(jí)版锚国,列出子節(jié)點(diǎn)的同時(shí)列出節(jié)點(diǎn)的狀態(tài)信息

[zk: h1:2181(CONNECTED) 15] ls2 /
[zookeeper] # 子節(jié)點(diǎn)列表
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: h1:2181(CONNECTED) 16]

2.2 創(chuàng)建節(jié)點(diǎn)

create [-s] [-e] path data acl
    s:可選,表示該節(jié)點(diǎn)為順序節(jié)點(diǎn)
    e:可選玄坦,表示該節(jié)點(diǎn)為臨時(shí)節(jié)點(diǎn)
    path:節(jié)點(diǎn)路徑
    data:節(jié)點(diǎn)數(shù)據(jù)
    acl:訪問(wèn)控制列表
# 創(chuàng)建節(jié)點(diǎn)/node_1,數(shù)據(jù)為dataOfNode_1
[zk: h1:2181(CONNECTED) 17] create /node_1 dataOfNode_1
Created /node_1
[zk: h1:2181(CONNECTED) 18] ls /
[zookeeper, node_1]

# 創(chuàng)建臨時(shí)節(jié)點(diǎn)/node_1/node_1_1 11
# 在會(huì)話結(jié)束后被刪除
[zk: h1:2181(CONNECTED) 20] create -e /node_1/node_1_1 11
Created /node_1/node_1_1
[zk: h1:2181(CONNECTED) 21] ls /node_1
[node_1_1]
[zk: h1:2181(CONNECTED) 22] 

# 創(chuàng)建順序節(jié)點(diǎn)/node_1/node_1_2
[zk: h1:2181(CONNECTED) 22] create -s /node_1/node_1_2 12
Created /node_1/node_1_20000000001
[zk: h1:2181(CONNECTED) 23] create -s /node_1/node_1_3 13
Created /node_1/node_1_30000000002
[zk: h1:2181(CONNECTED) 26] create -s /node_1/node_1_2 12
Created /node_1/node_1_20000000003
[zk: h1:2181(CONNECTED) 27] create -s /node_1/node_1_2 12
Created /node_1/node_1_20000000004
[zk: h1:2181(CONNECTED) 28] create -s /node_1/node_1_2 12
Created /node_1/node_1_20000000005
[zk: h1:2181(CONNECTED) 29] 
# 目前的/node_1節(jié)點(diǎn)
[zk: h1:2181(CONNECTED) 29] ls /node_1
[node_1_20000000005, node_1_1, node_1_30000000002, node_1_20000000001, node_1_20000000003, node_1_20000000004]

2.3 修改操作

set path data [version]
    path : 節(jié)點(diǎn)路徑
    data : 新數(shù)據(jù)
    version : 版本號(hào)血筑,要么不寫,要么和上一次查詢出的版本號(hào)一致
該操作會(huì)影響節(jié)點(diǎn)的mZxid煎楣、dataVersion和mtime屬性
set /node_1 newdataOfNode_1
set /node_1 newdataOfNode_1 2

2.4 刪除操作

  • delete

只能刪除不含子節(jié)點(diǎn)的節(jié)點(diǎn)

delete path [version]
    path :要?jiǎng)h除的節(jié)點(diǎn)的路徑
  • rmr

可以遞歸刪除節(jié)點(diǎn)

rmr path

2.5 quota

  • setquota

對(duì)節(jié)點(diǎn)增加限制(配額)

setquota -n|-b val path
    n:表示子節(jié)點(diǎn)的最大個(gè)數(shù)
    b:表示數(shù)據(jù)值的最大長(zhǎng)度
    val:子節(jié)點(diǎn)最大個(gè)數(shù)或數(shù)據(jù)值的最大長(zhǎng)度
    path:節(jié)點(diǎn)路徑

最大節(jié)點(diǎn)數(shù)示例

# 創(chuàng)建節(jié)點(diǎn)/node_2
[zk: h1:2181(CONNECTED) 51] create /node_2 node2
Created /node_2
# 指定其子節(jié)點(diǎn)最大數(shù)為2
[zk: h1:2181(CONNECTED) 52] setquota -n 2 /node_2
Comment: the parts are option -n val 2 path /node_2
# 創(chuàng)建第2個(gè)子節(jié)點(diǎn)
[zk: h1:2181(CONNECTED) 53] create /node_2/node_2_1 21
Created /node_2/node_2_1
# 創(chuàng)建第2個(gè)子節(jié)點(diǎn)
[zk: h1:2181(CONNECTED) 54] create /node_2/node_2_2 22
Created /node_2/node_2_2
# 創(chuàng)建第3個(gè)子節(jié)點(diǎn)
# 此處雖然指定了最大兩個(gè)子節(jié)點(diǎn)豺总,但是并沒報(bào)錯(cuò),而是成功創(chuàng)建了
# 雖然創(chuàng)建成功了择懂,但是會(huì)在${dataDir}/zookeeper.out中記錄警告信息
[zk: h1:2181(CONNECTED) 55] create /node_2/node_2_3 23

[zk: h1:2181(CONNECTED) 56] ls /node_2
[node_2_1, node_2_2, node_2_3]

最大節(jié)點(diǎn)數(shù)警告信息

# 此處的zookeeper.out在zookeeper的 $dataDir目錄下
tail -2 /var/zookeeper/zookeeper.out
[myid:1] - WARN  [CommitProcessor:1:DataTree@301] - Quota exceeded: /node_2 count=3 limit=2
[myid:1] - WARN  [CommitProcessor:1:DataTree@301] - Quota exceeded: /node_2 count=4 limit=2
  • listquota

列出指定節(jié)點(diǎn)的quota

listquota path
[zk: h1:2181(CONNECTED) 58] listquota /node_2
absolute path is /zookeeper/quota/node_2/zookeeper_limits
# 子節(jié)點(diǎn)個(gè)數(shù)為2,數(shù)據(jù)長(zhǎng)度-1表示沒限制
Output quota for /node_2 count=2,bytes=-1
# 當(dāng)前信息喻喳,節(jié)點(diǎn)數(shù)為4(超額了),數(shù)據(jù)長(zhǎng)度為11(包含子節(jié)點(diǎn)的數(shù)據(jù)長(zhǎng)度)
Output stat for /node_2 count=4,bytes=11
[zk: h1:2181(CONNECTED) 59]
  • delquota

刪除quota

delquota [-n|-b] path
# 刪除/node_2對(duì)于子節(jié)點(diǎn)個(gè)數(shù)限制的quota
[zk: h1:2181(CONNECTED) 64] delquota -n /node_2
[zk: h1:2181(CONNECTED) 65] listquota /node_2
absolute path is /zookeeper/quota/node_2/zookeeper_limits
# -1表示不做限制
Output quota for /node_2 count=-1,bytes=-1
Output stat for /node_2 count=4,bytes=11
[zk: h1:2181(CONNECTED) 66]

2.6 ACL

此處的ACL(Access Control List)和Linux文件系統(tǒng)的中的那個(gè)訪問(wèn)控制列表有點(diǎn)類似。

權(quán)限主要有:

  • CREATE : 創(chuàng)建子節(jié)點(diǎn)
  • READ : 獲取節(jié)點(diǎn)數(shù)據(jù)和子節(jié)點(diǎn)列表
  • WRITE : 更新節(jié)點(diǎn)數(shù)據(jù)
  • DELETE : 刪除子節(jié)點(diǎn)
  • ADMIN : 設(shè)置節(jié)點(diǎn)ACL的權(quán)限

與授權(quán)相關(guān)的幾個(gè)概念:

  • shchema:權(quán)限模式,有IP和digest兩種
  • ID:授權(quán)對(duì)象
    • schema為IP時(shí)困曙,該值為具體的IP地址
    • scheme為digest時(shí)表伦,該值為 userName:base64(sha1(userName:password))
    • zookeeper的javaAPI提供了一個(gè)工具類org.apache.zookeeper.server.auth.DigestAuthenticationProvider 可以快速生成加密的密文
  • permission:權(quán)限谦去,指的就是上面所說(shuō)的五種權(quán)限

最終的組合為: schema + ID + permission

和ACL相關(guān)的命令

  • getAcl

獲取指定節(jié)點(diǎn)的ACL信息

getAcl path
# 創(chuàng)建節(jié)點(diǎn)/node9,并指定其ACL:ip為192.168.161.1,權(quán)限為create,read,write,delete,damin
[zk: h1:2181(CONNECTED) 22] create /node9 data9 ip:192.168.161.1:crwda
Created /node9
[zk: h1:2181(CONNECTED) 23] getAcl /node9
'ip,'192.168.161.1
: cdrwa

# schema為digest,用戶名為hylexus,密碼為123(密文),權(quán)限:create,read,write,admin,delete
[zk: h1:2181(CONNECTED) 26] create /node10 data10 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad
Created /node10
[zk: h1:2181(CONNECTED) 27] getAcl /node10
'digest,'hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=
: cdrwa
[zk: h1:2181(CONNECTED) 28] 
  • setAcl
setAcl path acl
setAcl /node_3 digest:hylexus:f4Myrgy6YlaWdo4lvv///2jgEDI=:crwad
setAcl /node_4 ip:192.168.161.1:crawd
  • addauth

注冊(cè)會(huì)話授權(quán)信息

addauth scheme auth
    schema:可取ip或digest
    auth
        schema==digest時(shí)為 userName:password
        schema==ip時(shí)為
# 用戶名:hylexus,密碼:123456
addauth digest hylexus:123456

其他命令

  • history : 列出命令歷史

  • redo : 該命令可以重新執(zhí)行指定命令編號(hào)的歷史命令,命令編號(hào)可以通過(guò)history查看

[zk: h1:2181(CONNECTED) 70] history
60 - ls /zookeeper
61 - get /node_2
……………………
……………………
# 重新執(zhí)行編號(hào)為60的命令
[zk: h1:2181(CONNECTED) 71] redo 60
[quota]
[zk: h1:2181(CONNECTED) 72] 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蹦哼,一起剝皮案震驚了整個(gè)濱河市鳄哭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纲熏,老刑警劉巖妆丘,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異赤套,居然都是意外死亡飘痛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門容握,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宣脉,“玉大人,你說(shuō)我怎么就攤上這事剔氏∷懿” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵谈跛,是天一觀的道長(zhǎng)羊苟。 經(jīng)常有香客問(wèn)我,道長(zhǎng)感憾,這世上最難降的妖魔是什么蜡励? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮阻桅,結(jié)果婚禮上凉倚,老公的妹妹穿的比我還像新娘。我一直安慰自己嫂沉,他們只是感情好稽寒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著趟章,像睡著了一般杏糙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚓土,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天宏侍,我揣著相機(jī)與錄音,去河邊找鬼蜀漆。 笑死负芋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旧蛾,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蠕嫁!你這毒婦竟也來(lái)了锨天?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤剃毒,失蹤者是張志新(化名)和其女友劉穎病袄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赘阀,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡益缠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了基公。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幅慌。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖轰豆,靈堂內(nèi)的尸體忽然破棺而出胰伍,到底是詐尸還是另有隱情,我是刑警寧澤酸休,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布骂租,位于F島的核電站,受9級(jí)特大地震影響斑司,放射性物質(zhì)發(fā)生泄漏渗饮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一宿刮、第九天 我趴在偏房一處隱蔽的房頂上張望互站。 院中可真熱鬧,春花似錦糙置、人聲如沸云茸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)标捺。三九已至,卻和暖如春揉抵,著一層夾襖步出監(jiān)牢的瞬間亡容,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工冤今, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闺兢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像屋谭,于是被迫代替她去往敵國(guó)和親脚囊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容