如何使用客戶端對ZooKeeper進行操作。
進入ZooKeeper的bin目錄之後,直接執行如下命令:
$ sh zkCli.sh
當看到如下輸出資訊時,表示已經成功連線上本地的ZooKeeper伺服器了:
注意,上面的命令沒有顯示地指定ZooKeeper伺服器地址,那麼預設是連線本地的ZooKeeper伺服器。如果希望連線指定的ZooKeeper伺服器,可以通過如下實現:
$ sh zkCli.sh -server ip:port
建立
使用create命令,可以建立一個ZooKeeper節點。用法如下:
create [-s] [-e] path data acl
其中,-s或-e分別指定節點特性:順序或臨時節點。預設情況下,即不新增-s或-e引數的,建立的是持久節點。
執行如下命令:
[zk : localhost:2181(CONNECTED) 0] create /zk-book 123
執行完上面的命令,就在ZooKeeper的根節點建立了一個叫做/zk-book的節點,並且節點的資料內容是“123”.另外,create命令的最後一個引數是acl,他是用來進行許可權控制的,預設情況下,不做任何許可權控制。
讀取
與讀取相關的命令包括ls命令和set命令。
ls
使用ls命令,可以列出ZooKeeper指定節點下的所有子節點。當然,這個命令只能看到指定節點下第一級的所有子節點。用法如下:
ls path [watch]
其中,path 表示的是指定資料節點的節點路徑。
執行如下命令:
[zk : localhost:2181(CONNECTED) 0] ls /
第一次部署的ZooKeeper叢集,預設在根節點“/”下面有一個叫做/zookeeper的保留節點。
get
使用get命令,可以獲取ZooKeeper指定節點的資料內容和屬性資訊。用法如下:
get path [watch]
執行如下命令:
[zk :localhost:2181(CONNECTED) 0] get /zk-book
從上面的輸出資訊中,我們可以看到,第一行是節點/zk-book的資料內容,其他幾行則是建立該節點的事務ID(cZxid)、最後一次更新該節點的事務ID(mZxid)和最後一次更新該節點的時間(mtime)等屬性資訊。
更新
使用set命令,可以更新指定節點的資料內容。用法如下:
set path data [version]
其中,data就是要更新的新內容。注意,set命令後面還有一個version引數,在ZooKeeper中,節點的資料是有版本概念的,這個引數用於指定本次更新操作是基於ZNode的哪一個資料版本進行的。
執行如下命令:
[zk: localhost:2181(CONNECTED) 3] set /zk-book 456
執行完以上命令後,節點/zk-book的資料內容就已經被更新成“456”了。在輸出資訊中,dataVersion的值由原來的0變成了1,這是因為剛才的更新操作導致該節點的資料版本也發生了變更。
刪除
使用delete命令,可以刪除ZooKeeper上的指定節點。用法如下:
delete path [version]
此命令中的version引數和set命令中的version引數的作用是一致的。
執行如下命令:
[zk: localhost:2181(CONNECTED) 2] delete /zk-book
執行完以上命令後,就可以把/zk-book這個節點成功刪除了。但是這裡要注意的一點是,要想刪除某一個指定節點,該節點必須沒有子節點存在。這可以通過執行如下命令來進行驗證:
上面的這個輸出結果已經很清晰的表明了刪除失敗,通過Node not empty 這個出錯資訊,可以看出無法刪除一個包含子節點的節點。