Project: Apache Zookeeper (Orchestration & Management / Coordination & Service Discovery)
File: zookeeperCLI.md

<!-- Copyright 2002-2021 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. //--> Enter into the ZooKeeper-cli ```bash bin/zkCli.sh bin/zkCli.sh -timeout 3000 -server remoteIP:2181 bin/zkCli.sh -waitforconnection -timeout 3000 -server remoteIP:2181 bin/zkCli.sh -client-configuration /path/to/client.properties ``` Showing helps about ZooKeeper commands ```bash [zkshell: 1] help [zkshell: 2] h ZooKeeper -server host:port cmd args addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-c] [-t ttl] path [data] [acl] delete [-v version] path deleteall path delquota [-n|-b|-N|-B] path get [-s] [-w] path getAcl [-s] path getAllChildrenNumber path getEphemerals path history listquota path ls [-s] [-w] [-R] path printwatches on|off quit reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]]] | [-add serverId=host:port1:port2;port3[,...]] [-remove serverId[,...]*] redo cmdno removewatches path [-c|-d|-a] [-l] set [-s] [-v version] path data setAcl [-s] [-v version] [-R] path acl setquota -n|-b|-N|-B val path stat [-w] path sync path version ``` Add a authorized user for ACL ```bash [zkshell: 9] getAcl /acldigesttest Insufficient permission : /acldigesttest [zkshell: 10] addauth digest user1:12345 [zkshell: 11] getAcl /acldigesttest 'digest,'user1:+owfoSBn/am19roBPzR1/MfCblE= : cdrwa [zkshell: 12] addauth digest zookeeper:admin ``` Close this client/session. ```bash [zkshell: 0] close 2019-03-09 06:42:22,178 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@528] - EventThread shut down for session: 0x10007ab7c550006 2019-03-09 06:42:22,179 [myid:] - INFO [main:ZooKeeper@1346] - Session: 0x10007ab7c550006 closed ``` Showing the config of quorum membership ```bash [zkshell: 17] config server.1=[2001:db8:1:0:0:242:ac11:2]:2888:3888:participant server.2=[2001:db8:1:0:0:242:ac11:2]:12888:13888:participant server.3=[2001:db8:1:0:0:242:ac11:2]:22888:23888:participant version=0 ``` Connect a ZooKeeper server. ```bash [zkshell: 4] connect 2019-03-09 06:43:33,179 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@986] - Socket connection established, initiating session, client: /127.0.0.1:35144, server: localhost/127.0.0.1:2181 2019-03-09 06:43:33,189 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1421] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x10007ab7c550007, negotiated timeout = 30000 connect "localhost:2181,localhost:2182,localhost:2183" [zkshell: 5] connect remoteIP:2181 ``` Create a znode. ```bash [zkshell: 7] create /persistent_node Created /persistent_node [zkshell: 8] create -e /ephemeral_node mydata Created /ephemeral_node [zkshell: 9] create -s /persistentsequentialnode mydata Created /persistentsequentialnode0000000176 [zkshell: 10] create -s -e /ephemeralsequentialnode mydata Created /ephemeralsequentialnode0000000174 [zkshell: 11] create /zk-node-create-schema mydata digest:user1:+owfoSBn/am19roBPzR1/MfCblE=:crwad Created /zk-node-create-schema [zkshell: 12] addauth digest user1:12345 [zkshell: 13] getAcl /zk-node-create-schema 'digest,'user1:+owfoSBn/am19roBPzR1/MfCblE= : cdrwa [zkshell: 14] create -c /container_node mydata Created /container_node [zkshell: 15] create -c /containernode/child1 mydata Created /containernode/child1 [zkshell: 16] create -c /containernode/child2 mydata Created /containernode/child2 [zkshell: 17] delete /containernode/child1 [zkshell: 18] delete /containernode/child2 [zkshell: 19] get /container_node org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /container_node [zkshell: 20] create -t 3000 /ttl_node mydata Created /ttl_node [zkshell: 21] get /ttl_node

KeeperErrorCode = NoNode for /ttl_node ``` Delete a node with a specific path ```bash [zkshell: 2] delete /config/topics/test [zkshell: 3] ls /config/topics/test Node does not exist: /config/topics/test ``` Delete all nodes under a specific path ```bash zkshell: 1] ls /config [changes, clients, topics] [zkshell: 2] deleteall /config [zkshell: 3] ls /config Node does not exist: /config ``` Delete the quota under a path ```bash [zkshell: 1] delquota /quota_test [zkshell: 2] listquota /quota_test absolute path is /zookeeper/quota/quotatest/zookeeperlimits quota for /quota_test does not exist. [zkshell: 3] delquota -n /c1 [zkshell: 4] delquota -N /c2 [zkshell: 5] delquota -b /c3 [zkshell: 6] delquota -B /c4 ``` Get the data of the specific path ```bash [zkshell: 10] get /latestproducerid_block {"version":1,"broker":0,"blockstart":"0","blockend":"999"} [zkshell: 11] get -s /latestproducerid_block {"version":1,"broker":0,"blockstart":"0","blockend":"999"} cZxid = 0x90000009a ctime = Sat Jul 28 08:14:09 UTC 2018 mZxid = 0x9000000a2 mtime = Sat Jul 28 08:14:12 UTC 2018 pZxid = 0x90000009a cversion = 0 dataVersion = 1 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 60 numChildren = 0 [zkshell: 12] get -w /latestproducerid_block {"version":1,"broker":0,"blockstart":"0","blockend":"999"} [zkshell: 13] set /latestproducerid_block mydata WATCHER:: WatchedEvent state:SyncConnected type:NodeDataChanged path:/latestproducerid_block ``` Get the ACL permission of one path ```bash [zkshell: 4] create /acl_test mydata ip:127.0.0.1:crwda Created /acl_test [zkshell: 5] getAcl /acl_test 'ip,'127.0.0.1 : cdrwa [zkshell: 6] getAcl /testwatch 'world,'anyone : cdrwa ``` Get all numbers of children nodes under a specific path ```bash [zkshell: 1] getAllChildrenNumber / 73779 [zkshell: 2] getAllChildrenNumber /ZooKeeper 2 [zkshell: 3] getAllChildrenNumber /ZooKeeper/quota 0 ``` Get all the ephemeral nodes created by this session ```bash [zkshell: 1] create -e /test-get-ephemerals "ephemeral node" Created /test-get-ephemerals [zkshell: 2] getEphemerals [/test-get-ephemerals] [zkshell: 3] getEphemerals / [/test-get-ephemerals] [zkshell: 4] create -e /test-get-ephemerals-1 "ephemeral node" Created /test-get-ephemerals-1 [zkshell: 5] getEphemerals /test-get-ephemerals test-get-ephemerals test-get-ephemerals-1 [zkshell: 6] getEphemerals /test-get-ephemerals [/test-get-ephemerals-1, /test-get-ephemerals] [zkshell: 7] getEphemerals /test-get-ephemerals-1 [/test-get-ephemerals-1] ``` Showing the history about the recent 11 commands that you have executed ```bash [zkshell: 7] history 0 - close 1 - close 2 - ls / 3 - ls / 4 - connect 5 - ls / 6 - ll 7 - history ``` Listing the quota of one path ```bash [zkshell: 1] listquota /c1 absolute path is /zookeeper/quota/c1/zookeeper_limits Output quota for /c1 count=-1,bytes=-1=;byteHardLimit=-1;countHardLimit=2 Output stat for /c1 count=4,bytes=0 ``` Listing the child nodes of one path ```bash [zkshell: 36] ls /quota_test [child1, child2, child_3] [zkshell: 37] ls -s /quota_test [child1, child2, child_3] cZxid = 0x110000002d ctime = Thu Mar 07 11:19:07 UTC 2019 mZxid = 0x110000002d mtime = Thu Mar 07 11:19:07 UTC 2019 pZxid = 0x1100000033 cversion = 3 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 3 [zkshell: 38] ls -R /quota_test /quota_test /quotatest/child1 /quotatest/child2 /quotatest/child3 [zkshell: 39] ls -w /brokers [ids, seqid, topics] [zkshell: 40] delete /brokers/ids WATCHER:: WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/brokers ``` A switch to turn on/off whether printing watches or not. ```bash [zkshell: 0] printwatches printwatches is on [zkshell: 1] printwatches off [zkshell: 2] printwatches printwatches is off [zkshell: 3] printwatches on [zkshell: 4] printwatches printwatches is on ``` Quit the CLI windows. ```bash [zkshell: 1] quit ``` Change the membership of the ensemble during the runtime. Before using this cli,read the details in the about the reconfig feature,especially the "Security" part. Pre-requisites: set reconfigEnabled=true in the zoo.cfg add a super user or skipAcl,otherwise will get Insufficient permission. e.g. addauth digest zookeeper:admin ```bash [zkshell: 1] reconfig --add 2=localhost:2781:2786:observer;12182 --add 5=localhost:2781:2786:observer;2185 -remove 4 Committed new configuration: server.1=localhost:2780:2785:participant;0.0.0.0:2181 server.2=localhost:2781:2786:observer;0.0.0.0:12182 server.3=localhost:2782:2787:participant;0.0.0.0:2183 server.5=localhost:2784:2789:observer;0.0.0.0:2185 version=1c00000002 [zkshell: 2] reconfig -members server.1=localhost:2780:2785:participant;0.0.0.0:2181,server.2=localhost:2781:2786:observer;0.0.0.0:12182,server.3=localhost:2782:2787:participant;0.0.0.0:12183 Committed new configuration: server.1=localhost:2780:2785:participant;0.0.0.0:2181 server.2=localhost:2781:2786:observer;0.0.0.0:12182 server.3=localhost:2782:2787:participant;0.0.0.0:12183 version=f9fe0000000c [zkshell: 3] reconfig -file /data/software/zookeeper/zookeeper-test/conf/myNewConfig.txt -v 2100000010 Committed new configuration: server.1=localhost:2780:2785:participant;0.0.0.0:2181 server.2=localhost:2781:2786:observer;0.0.0.0:12182 server.3=localhost:2782:2787:participant;0.0.0.0:2183 server.5=localhost:2784:2789:observer;0.0.0.0:2185 version=220000000c ``` Redo the cmd with the index from

```bash [zkshell: 4] history 0 - ls / 1 - get /consumers 2 - get /hbase 3 - ls /hbase 4 - history [zkshell: 5] redo 3 [backup-masters, draining, flush-table-proc, hbaseid, master-maintenance, meta-region-server, namespace, online-snapshot, replication, rs, running, splitWAL, switch, table, table-lock] ``` Remove the watches under a node. ```bash [zkshell: 1] get -w /brokers null [zkshell: 2] removewatches /brokers WATCHER:: WatchedEvent state:SyncConnected type:DataWatchRemoved path:/brokers ``` Set/update the data on a path. ```bash [zkshell: 50] set /brokers myNewData [zkshell: 51] set -s /quotatest mydataforquotatest cZxid = 0x110000002d ctime = Thu Mar 07 11:19:07 UTC 2019 mZxid = 0x1100000038 mtime = Thu Mar 07 11:42:41 UTC 2019 pZxid = 0x1100000033 cversion = 3 dataVersion = 2 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 21 numChildren = 3 [zkshell: 52] set -v 0 /brokers myNewData [zkshell: 53] set -v 0 /brokers myNewData version No is not valid : /brokers ``` Set the Acl permission for one node. ```bash [zkshell: 28] addauth digest user1:12345 [zkshell: 30] setAcl /aclauthtest auth:user1:12345:crwad [zkshell: 31] getAcl /aclauthtest 'digest,'user1:+owfoSBn/am19roBPzR1/MfCblE= : cdrwa [zkshell: 32] ls /aclauthtest [child1, child2] [zkshell: 33] getAcl /aclauthtest/child_2 'world,'anyone : cdrwa [zkshell: 34] setAcl -R /aclauthtest auth:user1:12345:crwad [zkshell: 35] getAcl /aclauthtest/child_2 'digest,'user1:+owfoSBn/am19roBPzR1/MfCblE= : cdrwa [zkshell: 36] stat /aclauthtest cZxid = 0xf9fc0000001c ctime = Tue Mar 26 16:50:58 CST 2019 mZxid = 0xf9fc0000001c mtime = Tue Mar 26 16:50:58 CST 2019 pZxid = 0xf9fc0000001f cversion = 2 dataVersion = 0 aclVersion = 3 ephemeralOwner = 0x0 dataLength = 0 numChildren = 2 [zkshell: 37] setAcl -v 3 /aclauthtest auth:user1:12345:crwad ``` Set the quota in one path. ```bash [zkshell: 18] setquota -n 2 /quota_test [zkshell: 19] create /quotatest/child1 Created /quotatest/child1 [zkshell: 20] create /quotatest/child2 Created /quotatest/child2 [zkshell: 21] create /quotatest/child3 Created /quotatest/child3 2019-03-07 11:22:36,680 [myid:1] - WARN [SyncThread:0:DataTree@374] - Quota exceeded: /quota_test count=3 limit=2 2019-03-07 11:22:41,861 [myid:1] - WARN [SyncThread:0:DataTree@374] - Quota exceeded: /quota_test count=4 limit=2 [zkshell: 22] setquota -b 5 /brokers [zkshell: 23] set /brokers "Ilovezookeeper" WARN [CommitProcWorkThread-7:DataTree@379] - Quota exceeded: /brokers bytes=4206 limit=5 [zkshell: 3] create /c1 Created /c1 [zkshell: 4] setquota -N 2 /c1 [zkshell: 5] listquota /c1 absolute path is /zookeeper/quota/c1/zookeeper_limits Output quota for /c1 count=-1,bytes=-1=;byteHardLimit=-1;countHardLimit=2 Output stat for /c1 count=2,bytes=0 [zkshell: 6] create /c1/ch-3 Count Quota has exceeded : /c1/ch-3 [zkshell: 3] create /c2 [zkshell: 4] setquota -B 4 /c2 [zkshell: 5] set /c2 "foo" [zkshell: 6] set /c2 "foo-bar" Bytes Quota has exceeded : /c2 [zkshell: 7] get /c2 foo ``` Showing the stat/metadata of one node. ```bash [zkshell: 1] stat /hbase cZxid = 0x4000013d9 ctime = Wed Jun 27 20:13:07 CST 2018 mZxid = 0x4000013d9 mtime = Wed Jun 27 20:13:07 CST 2018 pZxid = 0x500000001 cversion = 17 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 0 numChildren = 15 ``` Sync the data of one node between leader and followers(Asynchronous sync) ```bash [zkshell: 14] sync / [zkshell: 15] Sync is OK ``` Show the version of the ZooKeeper client/CLI ```bash [zkshell: 1] version ZooKeeper CLI version: 3.6.0-SNAPSHOT-29f9b2c1c0e832081f94d59a6b88709c5f1bb3ca, built on 05/30/2019 09:26 GMT ``` Gives all authentication information added into the current session. [zkshell: 1] whoami Auth scheme: User ip: 127.0.0.1 [zkshell: 2] addauth digest user1:12345 [zkshell: 3] whoami Auth scheme: User ip: 127.0.0.1 digest: user1