1、新增節點
(1)先啟動ZooKeeper,再登錄到ZooKeeper
[root@zhai bin]# ./zkServer.sh start ZooKeeper JMX enabled by default Using config: /home/zookeeper/zookeeper-3.4.10/bin/../conf/zoo.cfg Starting zookeeper ... already running as process 2183. [root@zhai bin]# ./zkCli.sh Connecting to localhost:2181
(2)創建持久化節點並寫入數據
[zk: localhost:2181(CONNECTED) 1] create /hadoop "nihao2020" Created /hadoop [zk: localhost:2181(CONNECTED) 2]
根據結點路徑讀取數據
[zk: localhost:2181(CONNECTED) 2] get /hadoop nihao2020 cZxid = 0x4 ctime = Thu Oct 22 04:02:38 CST 2020 mZxid = 0x4 mtime = Thu Oct 22 04:02:38 CST 2020 pZxid = 0x4 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 [zk: localhost:2181(CONNECTED) 3]
輸入quit命令退出后重新登錄依舊能夠讀取到數據,說明數據是持久化存儲的
(3)創建臨時結點並寫入數據
[zk: localhost:2181(CONNECTED) 1] create -e /test "a" Created /test [zk: localhost:2181(CONNECTED) 2] quit
退出后,使用get命令獲取數據的時候數據已經不存在了:
[zk: localhost:2181(CONNECTED) 0] get /test Node does not exist: /test
(4)創建有序節點
[zk: localhost:2181(CONNECTED) 1] create -s /test "a" Created /test0000000002
2、更新節點
(1)更新節點
[zk: localhost:2181(CONNECTED) 2] get /hadoop nihao2020 cZxid = 0x4 ctime = Thu Oct 22 04:02:38 CST 2020 mZxid = 0x4 mtime = Thu Oct 22 04:02:38 CST 2020 pZxid = 0x4 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 9 numChildren = 0 [zk: localhost:2181(CONNECTED) 3] set /hadoop "zhaihuabing" cZxid = 0x4 ctime = Thu Oct 22 04:02:38 CST 2020 mZxid = 0xb mtime = Thu Oct 22 04:19:03 CST 2020 pZxid = 0x4 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 11 numChildren = 0 [zk: localhost:2181(CONNECTED) 4] get /hadoop zhaihuabing cZxid = 0x4 ctime = Thu Oct 22 04:02:38 CST 2020 mZxid = 0xb mtime = Thu Oct 22 04:19:03 CST 2020 pZxid = 0x4 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 11 numChildren = 0 [zk: localhost:2181(CONNECTED) 5]
每修改一次版本號加一
(2)帶有版本號的更新
[zk: localhost:2181(CONNECTED) 0] get /hadoop zhaihuabing cZxid = 0x4 ctime = Thu Oct 22 04:02:38 CST 2020 mZxid = 0xb mtime = Thu Oct 22 04:19:03 CST 2020 pZxid = 0x4 cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 11 numChildren = 0 [zk: localhost:2181(CONNECTED) 1] set /hadoop "2020001" 0 version No is not valid : /hadoop [zk: localhost:2181(CONNECTED) 2] set /hadoop "2020002" 1 cZxid = 0x4 ctime = Thu Oct 22 04:02:38 CST 2020 mZxid = 0xf mtime = Thu Oct 22 04:26:19 CST 2020 pZxid = 0x4 cversion = 0 dataVersion = 2 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 7 numChildren = 0 [zk: localhost:2181(CONNECTED) 3] get /hadoop 2020002 cZxid = 0x4 ctime = Thu Oct 22 04:02:38 CST 2020 mZxid = 0xf mtime = Thu Oct 22 04:26:19 CST 2020 pZxid = 0x4 cversion = 0 dataVersion = 2 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 7 numChildren = 0
第一次更新的時候版本號版本號不對應,提示版本號錯誤,在版本號一致的時候更新成功
3、刪除節點
(1)刪除節點
[zk: localhost:2181(CONNECTED) 4] delete /hadoop [zk: localhost:2181(CONNECTED) 5] get /hadoop Node does not exist: /hadoop
(2)帶有版本號的刪除
[zk: localhost:2181(CONNECTED) 8] set /hadoop "2020003" Node does not exist: /hadoop [zk: localhost:2181(CONNECTED) 9] create /hadoop "2020003" Created /hadoop [zk: localhost:2181(CONNECTED) 10] get /hadoop 2020003 cZxid = 0x13 ctime = Thu Oct 22 04:32:19 CST 2020 mZxid = 0x13 mtime = Thu Oct 22 04:32:19 CST 2020 pZxid = 0x13 cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 7 numChildren = 0 [zk: localhost:2181(CONNECTED) 11] delete /hadoop 1 version No is not valid : /hadoop [zk: localhost:2181(CONNECTED) 12] delete /hadoop 0 [zk: localhost:2181(CONNECTED) 13] get /hadoop Node does not exist: /hadoop
帶有版本號以后版本號只有在對應的情況下節點才能刪除成功
(3)delete命令不能刪除帶有子節點的節點
[zk: localhost:2181(CONNECTED) 14] create /test "test" Created /test [zk: localhost:2181(CONNECTED) 15] create /test/t1 "t1" Created /test/t1 [zk: localhost:2181(CONNECTED) 16] delete /test Node not empty: /test
(4)使用rmr命令刪除節點以及節點的子節點
[zk: localhost:2181(CONNECTED) 17] rmr /test [zk: localhost:2181(CONNECTED) 18] get /test Node does not exist: /test [zk: localhost:2181(CONNECTED) 19] get /test/t1 Node does not exist: /test/t1