大数据精讲专栏 - Zookeeper的shell操作

一, Zookeeper数据模型

具备目录和文件的双重特点

通过路径引用

储存数据有大小限制

三部分: 状态信息, 关联数据, 子节点

二, Znode节点类型

永久节点: 生命周期不依赖于会话, 并且只能在客户端显式执行删除操作的时候, 才能被删除;

临时节点: 生命周期依赖于会话, 一旦会话结束, 临时节点将会被自动删除; 不能有子节点.

Znode具有序列化特性, 如果在创建的时候指定的话, Znode的名字后面会自动追加一个不断增加的序列号. 序列号对于此节点的父节点来说是唯一的, 这样子节点根据创建的先后顺序不同, 在名字上有不同的先后顺序(%10d: 10位数字, 没有数值的数位用0补充)

三, Shell操作

使用zkCli.sh 连接到zookeeper集群之后, 如果不晓得操作有哪些, 就随便输入一些, 便会显示关于zookeeper的操作指令

bin/zkCli.sh -server node1:2181
[zk: node1:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: node1:2181(CONNECTED) 1] help
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] path
	get [-s] [-w] path
	getAcl [-s] path
	history 
	listquota path
	ls [-s] [-w] [-R] path
	ls2 path [watch]
	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]
	rmr path
	set [-s] [-v version] path data
	setAcl [-s] [-v version] [-R] path acl
	setquota -n|-b val path
	stat [-w] path
	sync path
Command not found: Command not found help
[zk: node1:2181(CONNECTED) 2] ls -R /
/
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 3]

指令的内容, 无非是对zookeeper这个Znode的增删改查

创建节点

1, PERSISTENT:永久节点

[zk: node1:2181(CONNECTED) 11] create /2021sunny
Created /2021sunny
[zk: node1:2181(CONNECTED) 13] ls /
[2021sunny, zookeeper]
[zk: node1:2181(CONNECTED) 14] ls / -R
/
/2021sunny
/zookeeper
/zookeeper/config
/zookeeper/quota

[zk: node1:2181(CONNECTED) 11] create /2021sunny
Created /2021sunny
[zk: node1:2181(CONNECTED) 13] ls /
[2021sunny, zookeeper]
[zk: node1:2181(CONNECTED) 14] ls / -R
/
/2021sunny
/zookeeper
/zookeeper/config
/zookeeper/quota

2, EPHEMERAL:临时节点

[zk: node1:2181(CONNECTED) 20] create -e /2021happy
Created /2021happy
[zk: node1:2181(CONNECTED) 22] ls -R /
/
/2021happy
/2021sunny
/zookeeper
/zookeeper/config
/zookeeper/quota


--------------------退出客户端, 重新登录zookeeper--------------------
[zk: node1:2181(CONNECTED) 23] quit

WATCHER::

WatchedEvent state:Closed type:None path:null
2021-01-12 11:55:37,972 [myid:] - INFO  [main:ZooKeeper@1422] - Session: 0x10001ef1be90000 closed
2021-01-12 11:55:37,972 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x10001ef1be90000


--------------------退出客户端, 重新登录zookeeper--------------------
[zk: node1:2181(CONNECTED) 0] ls -R /
/
/2021sunny
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 1]

临时Znode节点原理: 该临时节点只与客户端的会话具有相同生命周期, 当前会话session断开, 节点自动删除.

应用场景: 集群中各个节点的存活状态管理.

3, PERSISTENT_SEQUENTIAL:永久节点、序列化

[zk: node1:2181(CONNECTED) 0] ls -R /
/
/2021sunny
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 1] create -s /2021sunny/node
Created /2021sunny/node0000000003
[zk: node1:2181(CONNECTED) 2] create -s /2021sunny/node
Created /2021sunny/node0000000004
[zk: node1:2181(CONNECTED) 3] create -s /2021sunny/node
Created /2021sunny/node0000000005
[zk: node1:2181(CONNECTED) 4] ls -r /
org.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: -r
[zk: node1:2181(CONNECTED) 5] ls -R /
/
/2021sunny
/zookeeper
/2021sunny/node0000000003
/2021sunny/node0000000004
/2021sunny/node0000000005
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 6]

4, EPHEMERAL_SEQUENTIAL:临时节点、序列化

WatchedEvent state:SyncConnected type:None path:null
[zk: node1:2181(CONNECTED) 0] ls /
[2021sunny, zookeeper]
[zk: node1:2181(CONNECTED) 1] create -e -s /2021sunny/cnode
Created /2021sunny/cnode0000000000
[zk: node1:2181(CONNECTED) 2] create -e -s /2021sunny/cnode
Created /2021sunny/cnode0000000001
[zk: node1:2181(CONNECTED) 3] create -e -s /2021sunny/cnode
Created /2021sunny/cnode0000000002
[zk: node1:2181(CONNECTED) 4] ls -R /
/
/2021sunny
/zookeeper
/2021sunny/cnode0000000000
/2021sunny/cnode0000000001
/2021sunny/cnode0000000002
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 5] 

--------------------退出客户端, 重新登录zookeeper--------------------
[zk: node1:2181(CONNECTED) 23] quit

--------------------退出客户端, 重新登录zookeeper--------------------
[zk: node1:2181(CONNECTED) 0] ls -R /
/
/2021sunny
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 1]

查看节点

上面已经试验了ls 以及ls -R的使用效果

下面查看ls2的效果: 使用ls -s替代了, 也就是展示详细信息

[zk: node1:2181(CONNECTED) 7] ls2 /
'ls2' has been deprecated. Please use 'ls [-s] path' instead.
[zookeeper, 2021sunny]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x100000000c
cversion = 6
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2

[zk: node1:2181(CONNECTED) 8] ls2 /2021sunny
'ls2' has been deprecated. Please use 'ls [-s] path' instead.
[node0000000003, node0000000004, node0000000005]
cZxid = 0x1000000002
ctime = Tue Jan 12 11:49:28 CST 2021
mZxid = 0x1000000005
mtime = Tue Jan 12 11:50:43 CST 2021
pZxid = 0x1000000015
cversion = 9
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 14
numChildren = 3
[zk: node1:2181(CONNECTED) 9]

设置or更新节点数据

作用: 给Znode节点设置值和获取值

[zk: node1:2181(CONNECTED) 16] set /2021sunny/node0000000003 "work hard"
[zk: node1:2181(CONNECTED) 17] get /2021sunny/node0000000003 
work hard
[zk: node1:2181(CONNECTED) 18] ls -s /2021sunny/node0000000003
[]cZxid = 0x1000000013
ctime = Tue Jan 12 12:02:39 CST 2021
mZxid = 0x1000000016
mtime = Tue Jan 12 12:07:26 CST 2021
pZxid = 0x1000000013
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0

删除节点

[zk: node1:2181(CONNECTED) 34] ls -R /
/
/2021sunny
/zookeeper
/2021sunny/node0000000003
/2021sunny/node0000000004
/2021sunny/node0000000005
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 35] delete /2021sunny/node0000000003
[zk: node1:2181(CONNECTED) 36] ls -R /
/
/2021sunny
/zookeeper
/2021sunny/node0000000004
/2021sunny/node0000000005
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 37] 

删除所有: rmr(已经过时), 提示使用deleteall

[zk: node1:2181(CONNECTED) 57] rmr /2021sunny
The command 'rmr' has been deprecated. Please use 'deleteall' instead.
[zk: node1:2181(CONNECTED) 58] ls -R /
/
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: node1:2181(CONNECTED) 59] 

列出历史操作记录

作用: 罗列出当前session中的所有历史操作

[zk: node1:2181(CONNECTED) 6] history
0 - ls -R /
1 - create -s /2021sunny/node
2 - create -s /2021sunny/node
3 - create -s /2021sunny/node
4 - ls -r /
5 - ls -R /
6 - history
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

能力工场小马哥

如果对您有帮助, 请打赏支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值