zookeeper常见命令详解2

1、version 展示客户端版本

bash 复制代码
[zkshell: 1] version
ZooKeeper CLI version: 3.6.0-SNAPSHOT-29f9b2c1c0e832081f94d59a6b88709c5f1bb3ca, built on 05/30/2019 09:26 GMT

2、whoami 展示出所有已经添加(addauth)用户的信息

bash 复制代码
[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

3、set [-s] [-v version] path data 设置或者更新节点的数据

bash 复制代码
[zkshell: 50] set /brokers myNewData
  • set -s 设置值的同时并展示znode状态
bash 复制代码
[zkshell: 51] set -s /quota_test mydata_for_quota_test
	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
  • -v 设置dataVersion的版本号,如果传入的dataVersion与当前版本号不一致时,zookeeper会拒绝设置值。
bash 复制代码
[zkshell: 52] set -v 0 /brokers myNewData
[zkshell: 53] set -v 0 /brokers myNewData
	version No is not valid : /brokers

4、close 关闭客户端/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

5、config 展示集群节点配置

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

6、connect host:port 连接服务器

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"

# connect a remote server
[zkshell: 5] connect remoteIP:2181

7、removewatches 移除节点的watch

bash 复制代码
[zkshell: 1] get -w /brokers
	null
[zkshell: 2] removewatches /brokers
	WATCHER::
	WatchedEvent state:SyncConnected type:DataWatchRemoved path:/brokers

8、history 展示最近已经执行过的11个命令

bash 复制代码
[zkshell: 7] history
	0 - close
	1 - close
	2 - ls /
	3 - ls /
	4 - connect
	5 - ls /
	6 - ll
	7 - history

9、redo 使用数字index 重新执行已经执行过的命令

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]

10、sync path 在leader和followers 同步节点数据(异步同步 Asynchronous sync)

bash 复制代码
[zkshell: 14] sync /
[zkshell: 15] Sync is OK

11、quota 份额

  • 一个节点的quota份额被存储在 /zookeeper/quota 节点下;
  • 用户不能对/zookeeper/quota节点下的节点设置quota;包括/zookeeper/quota节点本身;
  • quota 支持软(soft)quota 和硬(hard)quota,当超出设定的值时,软quota依旧可以创建成功,但是会告警,硬quota不会设置成功,会抛出QuotaExceededException异常;
  • 一个节点的quota属性如下:
bash 复制代码
[zk: localhost:2181(CONNECTED) 6] listquota /test1
absolute path is /zookeeper/quota/test1/zookeeper_limits
quota for /test1 does not exist.
[zk: localhost:2181(CONNECTED) 8] setquota -n 4 /test1
[zk: localhost:2181(CONNECTED) 9] listquota /test1
absolute path is /zookeeper/quota/test1/zookeeper_limits
Output quota for /test1 count=4,bytes=-1=;byteHardLimit=-1;countHardLimit=-1
Output stat for /test1 count=1,bytes=0
[zk: localhost:2181(CONNECTED) 10]
  • 当同时设置软quota和硬quota的时候,硬quota优先性高;
  • 当对一个节点设置quota的时候,如果它的父节点或者子节点已经被设置了quota,则该节点无法设置成功;
bash 复制代码
[zk: localhost:2181(CONNECTED) 36] setquota -N 3 /test2/li
/test2/li has a parent /test2 which has a quota
  • 在3.7.0版本以及之后的版本中新增该配置检查,启用方式需要在配置文件中新增:
bash 复制代码
enforceQuota=true
  • 当设置节点数量的时候,节点数量会包括自身,即不能设置为0;
bash 复制代码
[zk: localhost:2181(CONNECTED) 50] setquota -N 0 /test5
the num quota must be greater than zero
[zk: localhost:2181(CONNECTED) 51]

(1) setquota -n|-b|-N|-B val path 设置份额

  • setquota -n count /path/node 软设置该节点子节点的数量(直属子节点),如果该设置存在,则会更新该设置,该节点必须存在才能设置;这种限制是软限制,如果超出数量,只会警告但是并不会报错;
bash 复制代码
[zk: localhost:2181(CONNECTED) 4] ls -R /
/
/test1
/zookeeper
/zookeeper/config
/zookeeper/quota
[zk: localhost:2181(CONNECTED) 5] setquota -n 2 /test2
/test2 does not exist.
[zk: localhost:2181(CONNECTED) 6]
bash 复制代码
[zkshell: 18] setquota -n 2 /quota_test
[zkshell: 19] create /quota_test/child_1
	Created /quota_test/child_1
[zkshell: 20] create /quota_test/child_2
	Created /quota_test/child_2
[zkshell: 21] create /quota_test/child_3
	Created /quota_test/child_3
# Notice:don't have a hard constraint,just log the warning info
	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
  • setquota -b bytes /path/node 软设置该节点数据的长度,如果该设置存在,则会更新该设置,该节点必须存在才能设置;这种限制是软限制,如果超出长度,只会警告但是并不会报错;
bash 复制代码
# -b to limit the bytes(data length) of one path
[zkshell: 22] setquota -b 5 /brokers
[zkshell: 23] set /brokers "I_love_zookeeper"
# Notice:don't have a hard constraint,just log the warning info
	WARN  [CommitProcWorkThread-7:DataTree@379] - Quota exceeded: /brokers bytes=4206 limit=5
  • setquota -N count /path/node 硬设置该节点子节点的数量,如果该设置存在,则会更新该设置,该节点必须存在才能设置;这种限制是硬限制,如果超出数量,会抛出异常;
bash 复制代码
[zk: localhost:2181(CONNECTED) 45] setquota -N 3 /test4
[zk: localhost:2181(CONNECTED) 46] create /test4/li
Created /test4/li
[zk: localhost:2181(CONNECTED) 47] create /test4/l2
Created /test4/l2
[zk: localhost:2181(CONNECTED) 48] create /test4/l3
Quota has exceeded : /test4/l3
[zk: localhost:2181(CONNECTED) 49]
  • setquota -B bytes /path/node 硬设置该节点数据的长度,如果该设置存在,则会更新该设置,该节点必须存在才能设置;这种限制是硬限制,如果超出长度,会抛出异常;

(2) listquota path 列出quota信息

bash 复制代码
zk: localhost:2181(CONNECTED) 51] listquota /test4
absolute path is /zookeeper/quota/test4/zookeeper_limits
Output quota for /test4 count=-1,bytes=-1=;byteHardLimit=-1;countHardLimit=3
Output stat for /test4 count=3,bytes=0
[zk: localhost:2181(CONNECTED) 52]

(3)delquota [-n|-b|-N|-B] path 删除quota

bash 复制代码
[zkshell: 1] delquota /quota_test
[zkshell: 2] listquota /quota_test
	absolute path is /zookeeper/quota/quota_test/zookeeper_limits
	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
相关推荐
miss writer37 分钟前
Redis分布式锁释放锁是否必须用lua脚本?
redis·分布式·lua
m0_7482548844 分钟前
DataX3.0+DataX-Web部署分布式可视化ETL系统
前端·分布式·etl
字节程序员2 小时前
Jmeter分布式压力测试
分布式·jmeter·压力测试
ProtonBase2 小时前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
时时刻刻看着自己的心2 小时前
clickhouse分布式表插入数据不用带ON CLUSTER
分布式·clickhouse
Data跳动11 小时前
Spark内存都消耗在哪里了?
大数据·分布式·spark
Java程序之猿12 小时前
微服务分布式(一、项目初始化)
分布式·微服务·架构
来一杯龙舌兰13 小时前
【RabbitMQ】RabbitMQ保证消息不丢失的N种策略的思想总结
分布式·rabbitmq·ruby·持久化·ack·消息确认
节点。csn15 小时前
Hadoop yarn安装
大数据·hadoop·分布式
NiNg_1_23416 小时前
基于Hadoop的数据清洗
大数据·hadoop·分布式