1. 程式人生 > >如何使用客戶端對ZooKeeper進行操作。

如何使用客戶端對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 這個出錯資訊,可以看出無法刪除一個包含子節點的節點。