一、zookeeper客户端的命令解释
linu帮助命令解释
[zk: localhost:2181(CONNECTED) 0] help
帮助命令
ZooKeeper -server host:port cmd args
注意
:
直接执⾏
zkCli.sh
默认连接的是
localhost:2181
本地的
zookeeper
服 务器,
想连接其他的服务器两种⽅式
:zkCli.sh -server master:2181
或者 先通过zkCli.sh
连接到本地的服务器
再使⽤
connect master:2181 stat path [watch] 查看节点的状态信息
,
会⾃动建⽴监听机制
,
监听当前 节点的状态改变,
默认只能监听⼀次
set path data [version]
设置节点的数据,
会⾃动建⽴监听机制
,
监听当前
节点的状态改变
,
默认只能监听⼀次
set path data [version]
设置节点的数据
ls path [watch]
获取路径下的节点信息
,
路径为绝对路径
,
会⾃动建 ⽴监听机制,
监听当前节点的状态改变
,
当我们创建新的⼦节点等活动时可以看到改变
., 默认只能监听⼀次
例如
:
会显示信息
:
说明我们对
/aa
进⾏了监听
,
发现
aa
下新增了⼦节点等
WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/aa
delquota [-n|-b] path
删除节点配额
ls2 path [watch]
获取路径下的节点详情信息
,
路径为绝对路径
,
会⾃动 建⽴监听机制,监听当前节点的状态改变
setAcl path acl
设置节点
ACL(
授权信息
)
setquota -n|-b val path
设置⼦节点个数和数据⻓度配额
history
列出最近的历史命令
redo cmdno
再次执⾏某命令
如:redo 5
其中
5
是命令的
ID,
需要与
history
配合使⽤
printwatches on|off
设置和显示监视状态
delete path [version]
删除没有⼦节点的节点
sync path
强制同步
由于请求在半数以上的
zk server
上⽣效就表 示此请求⽣效,那么就会有⼀些zk server
上的数据是旧的。
sync
命令就是强制同步 所有的更新操作。
listquota path
显示配额
rmr path
递归删除
get path [watch]
获取节点信息
,
注意节点的路径全部是绝对路径
(
必须 从/
开始
),
会⾃动建⽴监听机制
,
监听当前节点的状态改变
,
注意这⾥只能是
set
操作时 可监听,
默认只能监听⼀次
create [-s] [-e] path data acl
创建节点
-s
带顺序的节点
-e 临时节点
addauth scheme auth
节点认证。
如
addauth digest username:password
,可参⻅
setAcl
命令
digest 处
使⽤⽅法:
⼀、通过setAcl
设置⽤户名和密码
setAcl pathdigest:username:base64(sha1(password)):crwda
⼆、认证addauth digest username:password
quit
退出
getAcl path
获取节点
ACL
close
断开客户端与服务器连接
connect host:port
连接
zk
服务器
,
与
close
命令配合使⽤可以连接后者 断开zk
服务器
二、create指令详解
zknode
有四种类型
zookeeper
中的
znode
有多种类型:
1.PERSISTENT 持久的:创建者就算跟集群断开联系,该类节点也会持久存 在与zk
集群中
2.EPHEMERAL 短暂的:创建者⼀旦跟集群断开联系,zk
就会将这个节 点删除
3.SEQUENTIAL 带序号的:这类节点,
zk
会⾃动拼接上⼀个序号,⽽ 且序号是递增的
1.持久的带序号的 zkCli.sh create -s /a ss 默认是持久的,-s代表带序号的
2.短暂的带序号的 zkCli.sh create -e -s /a ss 短暂的-e
代表短暂的
,-s
代表带序号的
注意:在测试短暂类型时,退出当前的客户端,创建的节点会消失。退出客户端⽅ 式:quit
3.持久的不带序号的 zkCli.sh create /a ss 默认是持久的,
4.短暂的不带序号的 zkCli.sh create -e / a ss 短暂的的
三、get指令详解
[zk: localhost:2181(CONNECTED) 21] get /zookeeper/quota/aa
hehe 节点数据信息
cZxid = 0x800000002 节点创建时的
zxid
ctime = Thu May 09 03:41:15 CST 2019 节点创建的时间
mZxid = 0x800000002 对应节点最近⼀次修改的时间
,
与⼦节点⽆关
mtime = Thu May 09 03:41:15 CST 2019 节点最近⼀次更新的时间
pZxid = 0x800000002 对应节点与⼦节点
(
或者⼦节点
)
的修改的时间
,
与孙⼦节点⽆关
cversion = 0 ⼦节点数据更新次数
dataVersion = 0 本节点数据更新次数
aclVersion = 0 节点授权信息
(ACL)
的更新次数
ephemeralOwner = 0x0 如果该节点为临时节点
,ephemeralOwner
值表示 与该节点绑定的session id.
如果该节点不是临时节点
,ephemeralOwner
值为
0
dataLength = 4 节点的数据⻓度
numChildren = 0 ⼦节点的个数
四、setAcl指令详解
scheme
和
id
world:
它下⾯只有⼀个
id,
叫
anyone, world:anyone
代表任何⼈, zookeeper中对所有⼈有权限的结点就是属于
world:anyone
的
auth:
它不需要
id,
只要是通过
authentication
的
user
都有权限 zookeeper⽀持通过
kerberos
来进⾏
authencation,
也⽀持 username/password形式的
authentication)
diges
t:
它对应的
id
为
username:BASE64(SHA1(password)),它需要先通过 username:password形式的authentication
ip
:
它对应的
id
为客户机的
IP
地址,设置的时候可以设置⼀个
ip
段,⽐如 ip:192.168.1.0/16, 表示匹配前
16
个
bit
的
IP
段
super
:
在这种
scheme
情况下,对应的
id
拥有超级权限,可以做任何事情
(cdrwa)
permissions
CREATE
(c):
创建权限,可以在在当前
node
下创建
child node
DELETE
(d):
删除权限,可以删除当前的
node
READ
(r):
读权限,可以获取当前
node
的数据,可以
list
当前
node
所有的
child
nodes
WRITE
(w):
写权限,可以向当前
node
写数据
ADMIN
(a):
管理权限,可以设置当前
node
的
permission
综上,⼀个简单使⽤
setAcl
命令,则可以为:
setAcl /zookeeper/node1 world:anyone:cdrw
五、setquota指令详解
ZooKeeper quota
机制⽀持节点个数(
znode)和空间⼤⼩(字节数)
setquota -n -d
-n
表示设置
znode count限制
-b
表示设置
znode
数据的字节⼤⼩限制
⼀般
-n -b
不能同时设定