Zookeeper的学习操作命令

Zookeeper 安装

这里就不在重复网上的安装zookeeper的安装步骤

Zookeeper 启动

./zkServer.sh start
[root@pizza bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
ZooKeeper remote JMX Port set to 8999
ZooKeeper remote JMX authenticate set to false
ZooKeeper remote JMX ssl set to false
ZooKeeper remote JMX log4j set to true
Using config: /home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@pizza bin]# 

查看Zookeeper的状态
[root@pizza bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
ZooKeeper remote JMX Port set to 8999
ZooKeeper remote JMX authenticate set to false
ZooKeeper remote JMX ssl set to false
ZooKeeper remote JMX log4j set to true
Using config: /home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: standalone
[root@pizza bin]# 

客户端连接zookeeper
[root@pizza bin]# ./zkCli.sh 
log4j:WARN No such property [maxFileSize] in org.apache.log4j.DailyRollingFileAppender.
log4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender.
Connecting to localhost:2181
Welcome to ZooKeeper!
JLine support is enabled

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] 

用help查看帮助命令
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
	stat path [watch]
	set path data [version]
	ls path [watch]
	delquota [-n|-b] path
	ls2 path [watch]
	setAcl path acl
	setquota -n|-b val path
	history 
	redo cmdno
	printwatches on|off
	delete path [version]
	sync path
	listquota path
	rmr path
	get path [watch]
	create [-s] [-e] path data acl
	addauth scheme auth
	quit 
	getAcl path
	close 
	connect host:port
[zk: localhost:2181(CONNECTED) 1] 

Zookeeper 操作查看

查看zookeeper节点/某一个节点等操作数据
默认只有一个zookeeper节点	
[zk: localhost:2181(CONNECTED) 4] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 5] 

查看zookeeper节点下的数据

[zk: localhost:2181(CONNECTED) 5] ls /zookeeper
[quota]
[zk: localhost:2181(CONNECTED) 6] ls /zookeeper/quota
[]
[zk: localhost:2181(CONNECTED) 7] 

获取节点下面的内容
下面一行数据为空说明,节点没有内容
cZxid :创建节点的id
ctime : 节点的创建时间
mZxid :修改节点的id
mtime :修改节点的时间
pZxid :子节点的id
cversion : 子节点的版本
dataVersion : 当前节点数据的版本
aclVersion :权限的版本
ephemeralOwner :判断是否是临时节点
dataLength : 数据的长度
numChildren :子节点的数量
[zk: localhost:2181(CONNECTED) 7] get /zookeeper

cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: localhost:2181(CONNECTED) 8]
获取节点更新的信息
[zk: localhost:2181(CONNECTED) 9] stat /zookeeper
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: localhost:2181(CONNECTED) 10] 
ls2是ls和stat命令的组合
[zk: localhost:2181(CONNECTED) 10] ls2 /zookeeper
[quota]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: localhost:2181(CONNECTED) 11] 
创建节点
create [-s] [-e] path data acl 
[zk: localhost:2181(CONNECTED) 12] create /jackpizza jackpizza
Created /jackpizza
[zk: localhost:2181(CONNECTED) 13] 

获取节点内容
[zk: localhost:2181(CONNECTED) 13] get /jackpizza
jackpizza
cZxid = 0x2
ctime = Wed Jan 27 09:44:38 CST 2021
mZxid = 0x2
mtime = Wed Jan 27 09:44:38 CST 2021
pZxid = 0x2
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
[zk: localhost:2181(CONNECTED) 14] 

创建临时节点
create -e
[zk: localhost:2181(CONNECTED) 15] create -e /jackpizza/temp temp
Created /jackpizza/temp

[zk: localhost:2181(CONNECTED) 17] get /jackpizza
jackpizza
cZxid = 0x2
ctime = Wed Jan 27 09:44:38 CST 2021
mZxid = 0x2
mtime = Wed Jan 27 09:44:38 CST 2021
pZxid = 0x3
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 1
[zk: localhost:2181(CONNECTED) 18] get /jackpizza/temp
temp
cZxid = 0x3
ctime = Wed Jan 27 09:46:58 CST 2021
mZxid = 0x3
mtime = Wed Jan 27 09:46:58 CST 2021
pZxid = 0x3
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x100000949fb0000
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 19] 
断开客户端重新连接zkcli,此时创建的临时节点temp消失
[zk: localhost:2181(CONNECTED) 0] ls /
[jackpizza, zookeeper]
# 查看临时节点数据消失
[zk: localhost:2181(CONNECTED) 1] ls /jackpizza
[]
[zk: localhost:2181(CONNECTED) 2] 

创建顺序节点
create -s 创建顺序节点 自动累加
[zk: localhost:2181(CONNECTED) 2] create -s /jackpizza/seq sec
# 查看节点数据在依次增加
Created /jackpizza/seq0000000001
[zk: localhost:2181(CONNECTED) 3] create -s /jackpizza/seq sec
# 查看节点数据在依次增加
Created /jackpizza/seq0000000002
[zk: localhost:2181(CONNECTED) 4] 
修改节点数据
set path data [version] 修改节点
[zk: localhost:2181(CONNECTED) 6] set /jackpizza pizzajack
cZxid = 0x2
ctime = Wed Jan 27 09:44:38 CST 2021
mZxid = 0x8
mtime = Wed Jan 27 09:53:23 CST 2021
pZxid = 0x7
cversion = 4
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 2
[zk: localhost:2181(CONNECTED) 7] get /jackpizza
pizzajack
cZxid = 0x2
ctime = Wed Jan 27 09:44:38 CST 2021
mZxid = 0x8
mtime = Wed Jan 27 09:53:23 CST 2021
pZxid = 0x7
cversion = 4
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 2
[zk: localhost:2181(CONNECTED) 8]
根据版本号更新数据
# 已经使用 set 根据版本号更新 dataVersion 乐观锁
# 因为数据的版本号已经修改为2 再次使用版本号1修改节点提交错误
[zk: localhost:2181(CONNECTED) 12] set /jackpizza jackma 1
version No is not valid : /jackpizza
[zk: localhost:2181(CONNECTED) 13] 
删除节点数据
delete path [version] 删除节点
[zk: localhost:2181(CONNECTED) 14] delete /jackpizza/seq0000000001
[zk: localhost:2181(CONNECTED) 15] ls /jackpizza/seq0000000002

Zookeeper 的监听机制

关于watcher机制大体的理解可以为,
当每个节点发生变化,都会触发watcher事件,类似于mysql的触发器。zk中 watcher是一次性的,触发后立即销毁
stat path [watch] 设置watch事件
get path [watch]设置watch事件
子节点创建和删除时触发watch事件,子节点修改不会触发该事件
[zk: localhost:2181(CONNECTED) 21] stat /jackpizza watch
Node does not exist: /jackpizza
[zk: localhost:2181(CONNECTED) 22] create /jackpizza test

WATCHER::

WatchedEvent state:SyncConnected type:NodeCreated path:/jackpizza
Created /jackpizza
[zk: localhost:2181(CONNECTED) 23] 
get path [watch] 设置watch事件
[zk: localhost:2181(CONNECTED) 23] get /jackpizza watch
test
cZxid = 0x10
ctime = Wed Jan 27 10:01:56 CST 2021
mZxid = 0x10
mtime = Wed Jan 27 10:01:56 CST 2021
pZxid = 0x10
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 24] set /jackpizza jackpizza

WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/jackpizza
cZxid = 0x10
ctime = Wed Jan 27 10:01:56 CST 2021
mZxid = 0x11
mtime = Wed Jan 27 10:03:22 CST 2021
pZxid = 0x10
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 9
numChildren = 0
[zk: localhost:2181(CONNECTED) 25] 

删除触发事件
[zk: localhost:2181(CONNECTED) 29] get /jackpizza watch
test
cZxid = 0x13
ctime = Wed Jan 27 10:04:43 CST 2021
mZxid = 0x13
mtime = Wed Jan 27 10:04:43 CST 2021
pZxid = 0x13
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 30] delete /jackpizza

WATCHER::

WatchedEvent state:SyncConnected type:NodeDeleted path:/jackpizza
[zk: localhost:2181(CONNECTED) 31] 

ACL权限控制

ZK的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)。
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限
身份的认证有4种方式:
- world:默认方式,相当于全世界都能访问
- auth:代表已经认证通过的用户(cli中可以通过addauth digest 		user:pwd 来添加当前上下文中的授权用户)
- digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
- ip:使用Ip地址认证

getAcl:获取某个节点的acl权限信息
[zk: localhost:2181(CONNECTED) 39] getAcl /jackpizza
'world,'anyone
: cdrwa
[zk: localhost:2181(CONNECTED) 40] 

四字命令

[stat]  查看zk的状态信息,以及是否mode
[root@pizza bin]# echo stat | nc 10.26.0.128 2181
Zookeeper version: 3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
Clients:
 /10.26.0.128:45048[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/1/51
Received: 272
Sent: 275
Connections: 1
Outstanding: 0
Zxid: 0x16
Mode: standalone
Node count: 5
[root@pizza bin]# 

[ruok] 查看当前zkserver是否启动,返回imok
[root@pizza bin]# echo ruok | nc localhost 2181
imok[root@pizza bin]# 

 [dump] 列出未经处理的会话和临时节点
[root@pizza bin]# echo dump | nc localhost 2181
SessionTracker dump:
Session Sets (0):
ephemeral nodes dump:
Sessions with Ephemerals (0):
[root@pizza bin]#
[conf] 查看服务器配置
[root@pizza bin]# echo conf | nc localhost 2181
clientPort=2181
dataDir=/home/zookeeper/ZooKeeper/data/version-2
dataLogDir=/home/zookeeper/ZooKeeper/ZooKeeper/log/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0
[root@pizza bin]# 

[cons] 展示连接到服务器的客户端信息
[root@pizza bin]# echo cons | nc localhost 2181
 /0:0:0:0:0:0:0:1:58020[0](queued=0,recved=1,sent=0)

[root@pizza bin]# 

显示环境配置信息
[envi] 展Zookeeper使用的环境变量
[root@pizza bin]# echo envi | nc localhost 2181
Environment:
zookeeper.version=3.4.13-2d71af4dbe22557fda74f9a9b4309b15a7487f03, built on 06/29/2018 04:05 GMT
host.name=localhost
java.version=1.8.0_172
java.vendor=Oracle Corporation
java.home=/home/root/kafka/JDK/jdk1.8.0_172/jre
java.class.path=/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../zookeeper-server/target/classes:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../build/classes:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../zookeeper-server/target/lib/*.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../build/lib/*.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../lib/slf4j-log4j12-1.7.25.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../lib/slf4j-api-1.7.25.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../lib/netty-all-4.1.54.Final.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../lib/log4j-1.2.17.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../lib/jline-0.9.94.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../lib/audience-annotations-0.5.0.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../zookeeper-3.4.13.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../zookeeper-server/src/main/resources/lib/*.jar:/home/pizza/zookeeper/inner/ZooKeeper/zookeeper-3.4.13/bin/../conf:/home/root/kafka/JDK/jdk1.8.0_172/lib/
java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.io.tmpdir=/tmp
java.compiler=<NA>
os.name=Linux
os.arch=amd64
os.version=3.10.0-1160.el7.x86_64
user.name=root
user.home=/root

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值