zookeeper-03 命令行操作详解大数据

 

1. 前言

在3台机器分别部署了zookeeper-3.4.5,本文操作是在此基础上进行的。部署详情参见上一篇文章

  

2. 客户端登录与帮助查看

 1 # 由于是集群模式,所以可以在3台机器的其中任意一台进行登录,操作结果和数据也会同步到其他机器  
 2 [[email protected] bin]# pwd 
 3 /app/zookeeper-3.4.5/bin 
 4 [[email protected] bin]# ll 
 5 total 64 
 6 -rwxr-xr-x 1  501 games   238 Oct  1  2012 README.txt 
 7 -rwxr-xr-x 1  501 games  1909 Oct  1  2012 zkCleanup.sh 
 8 -rwxr-xr-x 1  501 games  1049 Oct  1  2012 zkCli.cmd 
 9 -rwxr-xr-x 1  501 games  1512 Oct  1  2012 zkCli.sh 
10 -rwxr-xr-x 1  501 games  1333 Oct  1  2012 zkEnv.cmd 
11 -rwxr-xr-x 1  501 games  2599 Oct  1  2012 zkEnv.sh 
12 -rwxr-xr-x 1  501 games  1084 Oct  1  2012 zkServer.cmd 
13 -rwxr-xr-x 1  501 games  5467 Oct  1  2012 zkServer.sh 
14 -rw-r--r-- 1 root root  25108 May 26 14:51 zookeeper.out 
15 [[email protected] bin]# ./zkCli.sh  # 客户端登录  
16 ………………  # 一些摘要信息 
17 [zk: localhost:2181(CONNECTED) 0]  
18 [zk: localhost:2181(CONNECTED) 0] help  # 客户端帮助信息  
19 ZooKeeper -server host:port cmd args 
20     stat path [watch]           # 查看路径【节点】属性信息  [watch] 观察模式,有改变则会被通知,watch一次有效一次 
21     set path data [version]  # 设置/修改节点信息 
22     ls path [watch]             # 查看路径【节点】  [watch] 观察模式,有改变则会被通知,watch一次有效一次 
23     delquota [-n|-b] path 
24     ls2 path [watch] 
25     setAcl path acl 
26     setquota -n|-b val path 
27     history  
28     redo cmdno 
29     printwatches on|off 
30     delete path [version]   # 删除节点 
31     sync path 
32     listquota path 
33     rmr path           # 递归删除 
34     get path [watch]   # 更具路径【节点】得到信息  [watch] 观察模式,有改变则会被通知,watch一次有效一次 
35     create [-s] [-e] path data acl  # 创建节点和数据  -s 序列化【避免重复】 -e 临时数据【常用】  
36     addauth scheme auth 
37     quit   # 退出客户端 
38     getAcl path 
39     close  
40     connect host:port   # 可以连接到其他客户端,前提在一个集群内 
41 [zk: localhost:2181(CONNECTED) 1]

 

2.1.  数据的属性说明

属性

描述

czxid

节点被创建的Zxid值

mzxid

节点被修改的Zxid值

ctime

节点被创建的时间

mtime

节点最后一次被修改的时间

versoin

节点被修改的版本号

cversion

节点的所拥有子节点被修改的版本号

aversion

节点的ACL被修改的版本号

emphemeralOwner

如果此节点为临时节点,那么它的值为这个节点拥有者的会话ID;否则,它的值为0

dataLength

节点数据域的长度

numChildren

节点拥有的子节点个数

 

 

 

3.  常用操作

3.1.  切换到其他客户端

1 [zk: localhost:2181(CONNECTED) 1] connect 172.16.1.13:2181   
2 ……………… # 一些摘要信息 
3 WATCHER:: 
4  
5 WatchedEvent state:SyncConnected type:None path:null 
6  
7 [zk: 172.16.1.13:2181(CONNECTED) 2]

 

3.2.  节点的增删改查

3.2.1.   增加节点

1 [zk: 172.16.1.13:2181(CONNECTED) 2] ls / 
2 [zookeeper] 
3 [zk: 172.16.1.13:2181(CONNECTED) 3] create /zhang01/yang01 test0001  # 保证父节点存在   
4 Node does not exist: /zhang01/yang01 
5 [zk: 172.16.1.13:2181(CONNECTED) 4]  
6 [zk: 172.16.1.13:2181(CONNECTED) 4] create /zhang01 test01          
7 Created /zhang01 
8 [zk: 172.16.1.13:2181(CONNECTED) 5] ls / 
9 [zookeeper, zhang01]

 

3.2.2.    查询节点

 1 [zk: 172.16.1.13:2181(CONNECTED) 7] ls /      
 2 [zookeeper, zhang01] 
 3 [zk: 172.16.1.13:2181(CONNECTED) 8] get /zhang01   
 4 test01                                    # 内容 
 5 cZxid = 0x100000007                        # 创建数据时的事物编号 
 6 ctime = Sat May 26 15:11:40 CST 2018    # 创建时间 
 7 mZxid = 0x100000007                        # 修改数据时的事物编号 
 8 mtime = Sat May 26 15:11:40 CST 2018    # 修改时间 
 9 pZxid = 0x100000007            # 持久化事物编号 
10 cversion = 0                # 创建版本号 
11 dataVersion = 0                # 数据版本 
12 aclVersion = 0                # 权限版本 
13 ephemeralOwner = 0x0        # 持久接待 
14 dataLength = 6                # 数据长度 
15 numChildren = 0                # 子节点数

 

3.2.3.    修改节点

 1 [zk: 172.16.1.13:2181(CONNECTED) 9] ls / 
 2 [zookeeper, zhang01] 
 3 [zk: 172.16.1.13:2181(CONNECTED) 10] set /zhang01 1111111  # 修改节点信息  
 4 cZxid = 0x100000007 
 5 ctime = Sat May 26 15:11:40 CST 2018 
 6 mZxid = 0x100000009 
 7 mtime = Sat May 26 15:15:38 CST 2018 
 8 pZxid = 0x100000007 
 9 cversion = 0 
10 dataVersion = 1 
11 aclVersion = 0 
12 ephemeralOwner = 0x0 
13 dataLength = 7 
14 numChildren = 0 
15 [zk: 172.16.1.13:2181(CONNECTED) 11] get /zhang01         
16 1111111 
17 cZxid = 0x100000007 
18 ctime = Sat May 26 15:11:40 CST 2018 
19 mZxid = 0x100000009 
20 mtime = Sat May 26 15:15:38 CST 2018 
21 pZxid = 0x100000007 
22 cversion = 0 
23 dataVersion = 1 
24 aclVersion = 0 
25 ephemeralOwner = 0x0 
26 dataLength = 7 
27 numChildren = 0

 

3.2.4.    节点常规删除

 1 [zk: localhost:2181(CONNECTED) 1] ls /zhang01 
 2 [test04, test03, test02, test01] 
 3 [zk: localhost:2181(CONNECTED) 3] ls /zhang01/test04  # 没有子节点  
 4 [] 
 5 [zk: localhost:2181(CONNECTED) 4] get /zhang01/test04 
 6 date_test04 
 7 cZxid = 0x10000000d 
 8 ……………… 
 9 [zk: localhost:2181(CONNECTED) 5] delete /zhang01/test04  # 删除子节点 
10 [zk: localhost:2181(CONNECTED) 6] ls /zhang01   # 经常看删除成功         
11 [test03, test02, test01] 
12 [zk: localhost:2181(CONNECTED) 7] delete /zhang01  # 如果有子节点那么不能删除  
13 Node not empty: /zhang01

 

3.2.5.    递归删除节点

1 [zk: localhost:2181(CONNECTED) 8] ls /zhang01 
2 [test03, test02, test01] 
3 [zk: localhost:2181(CONNECTED) 9] rmr /zhang01  # 递归删除  
4 [zk: localhost:2181(CONNECTED) 10] ls /zhang01  # 删除成功  
5 Node does not exist: /zhang01 
6 [zk: localhost:2181(CONNECTED) 11] ls / 
7 [zookeeper]

 

3.3.  持久节点和临时节点

第一台客户端

 1 [zk: localhost:2181(CONNECTED) 14] ls /             
 2 [zookeeper] 
 3 [zk: localhost:2181(CONNECTED) 15] create /zhang01 yang01  # 默认持久节点  
 4 Created /zhang01 
 5 [zk: localhost:2181(CONNECTED) 16] create -e /zhang02 yang02  # 创建临时节点  
 6 Created /zhang02 
 7 [zk: localhost:2181(CONNECTED) 17] ls / 
 8 [zookeeper, zhang02, zhang01] 
 9 [zk: localhost:2181(CONNECTED) 18] get /zhang01 
10 yang01 
11 cZxid = 0x100000018 
12 ctime = Sat May 26 15:33:47 CST 2018 
13 mZxid = 0x100000018 
14 mtime = Sat May 26 15:33:47 CST 2018 
15 pZxid = 0x100000018 
16 cversion = 0 
17 dataVersion = 0 
18 aclVersion = 0 
19 ephemeralOwner = 0x0   # 代表持久节点  
20 dataLength = 6 
21 numChildren = 0 
22 [zk: localhost:2181(CONNECTED) 19] get /zhang02 
23 yang02 
24 cZxid = 0x100000019 
25 ctime = Sat May 26 15:33:55 CST 2018 
26 mZxid = 0x100000019 
27 mtime = Sat May 26 15:33:55 CST 2018 
28 pZxid = 0x100000019 
29 cversion = 0 
30 dataVersion = 0 
31 aclVersion = 0 
32 ephemeralOwner = 0x1639b3087ac0002  # 代表临时节点   
33 dataLength = 6 
34 numChildren = 0 
35 [zk: localhost:2181(CONNECTED) 20] quit  # 退出当前客户端【那么当前这个客户端创建的临时节点会被自动删除】 

 

第二台客户端

1 # 之前可以正常查到,但是当上面的客户端退出后,节点/zhang02 被自动删除了   
2 [zk: localhost:2181(CONNECTED) 4] ls / 
3 [zookeeper, zhang01]

 

3.4.  节点序列化

 1 [zk: localhost:2181(CONNECTED) 14] ls / 
 2 [zookeeper, zhang01] 
 3 [zk: localhost:2181(CONNECTED) 15] ls /zhang01 
 4 [] 
 5 [zk: localhost:2181(CONNECTED) 16]  
 6 [zk: localhost:2181(CONNECTED) 16] create -s /zhang01/test01 test01   
 7 Created /zhang01/test010000000002 
 8 [zk: localhost:2181(CONNECTED) 17] create -s -e /zhang01/test02 test02    
 9 Created /zhang01/test020000000003 
10 [zk: localhost:2181(CONNECTED) 18]  
11 [zk: localhost:2181(CONNECTED) 18] ls /zhang01 
12 [test020000000003, test010000000002]

 

3.5.  watch模式节点操作

watch监听有不同的类型,有监听状态的stat ,内容的get,目录结构的ls。

 

3.5.1.    watch节点属性

监听自身属性改变和节点删除

 1 # 第一台客户端监听 
 2 [zk: localhost:2181(CONNECTED) 4] ls /                
 3 [zookeeper, zhang01] 
 4 [zk: localhost:2181(CONNECTED) 5] stat /zhang01 watch 
 5 cZxid = 0x100000018 
 6 ctime = Sat May 26 15:33:47 CST 2018 
 7 mZxid = 0x10000001e 
 8 mtime = Sat May 26 15:44:20 CST 2018 
 9 pZxid = 0x100000018 
10 cversion = 0 
11 dataVersion = 2 
12 aclVersion = 0 
13 ephemeralOwner = 0x0 
14 dataLength = 8 
15 numChildren = 0 
16  
17 # 第二台客户端操作 
18 [zk: localhost:2181(CONNECTED) 10] set /zhang01 yyyywwwww  # 修改节点信息  
19 …………………… 
20  
21 # 第一台客户端自动响应 
22 [zk: localhost:2181(CONNECTED) 6]  
23 WATCHER:: 
24  
25 WatchedEvent state:SyncConnected type:NodeDataChanged path:/zhang01

 

3.5.2.    watch路径

 1 # 第一台客户端 
 2 [zk: localhost:2181(CONNECTED) 6] ls /zhang01 watch  
 3 [] 
 4  
 5 # 第二台客户端操作 
 6 [zk: localhost:2181(CONNECTED) 11] create -e /zhang01/test01 test01 
 7 Created /zhang01/test01 
 8  
 9 # 第一台客户端自动响应 
10 [zk: localhost:2181(CONNECTED) 7]  
11 WATCHER:: 
12  
13 WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/zhang01 
14  
15 [zk: localhost:2181(CONNECTED) 7]

 

3.5.3.    watch节点

节点自身属性改变和节点被删除都会被通知

自身属性改变

 1 # 第一台客户端 
 2 [zk: localhost:2181(CONNECTED) 7] ls / 
 3 [zookeeper, zhang01] 
 4 [zk: localhost:2181(CONNECTED) 8] ls /zhang01 
 5 [test01] 
 6 [zk: localhost:2181(CONNECTED) 9]  
 7 [zk: localhost:2181(CONNECTED) 9] get /zhang01/test01 watch 
 8 test01 
 9 cZxid = 0x100000020 
10 ……………… 
11  
12 # 第二台客户端操作 
13 [zk: localhost:2181(CONNECTED) 12] set /zhang01/test01  kkkk 
14 cZxid = 0x100000020 
15 ctime = Sat May 26 15:49:30 CST 2018 
16 ……………… 
17  
18 # 第一台客户端自动响应 
19 [zk: localhost:2181(CONNECTED) 10]  
20 WATCHER:: 
21  
22 WatchedEvent state:SyncConnected type:NodeDataChanged path:/zhang01/test01 
23  
24 [zk: localhost:2181(CONNECTED) 10]

 

 

节点删除

 1 # 第一台客户端 
 2 [zk: localhost:2181(CONNECTED) 10] get /zhang01/test01 watch 
 3 kkkk 
 4 cZxid = 0x100000020 
 5 ……………… 
 6  
 7 # 第二台客户端操作 
 8 [zk: localhost:2181(CONNECTED) 14] delete /zhang01/test01  
 9  
10 # 第一台客户端自动响应 
11 [zk: localhost:2181(CONNECTED) 11]  
12 WATCHER:: 
13  
14 WatchedEvent state:SyncConnected type:NodeDeleted path:/zhang01/test01 
15  
16 [zk: localhost:2181(CONNECTED) 11]

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/9106.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论