上篇( http://www.cnblogs.com/yangzhenlong/p/8270835.html )zk 伪集群搭建好后,使用 zkCli 连接 zk 服务
切换到 zk1/bin 目录,执行 zkCli.cmd -server localhost:2181
查看 zk 客户端帮助
命令 h
example:
查看根目录节点: ls /
查看根节点状态:stat /
查看根节点数据和详情:get /
get 和 stat 的区别是:get 比 stat(第一行)多返回节点的数据信息
在根目录下创建 永久 node_1:create /node_1 "hello zk"
然后: ls /
在 node_1 节点下创建 临时节点 node_1_1
create -e /node_1/node_1_1 "node 1 1"
quit 之后,再连接 zk1,发现 node_1_1 不见了.说明临时节点,只是在客户端连接时有效
在 node_1 节点下创建顺序节点 node_1_2,发现返回了 node_1_20000000001(序列)
create -s /node_1/node_1_2 "node 2 2"
继续执行上面的命令,发现序列号 + 1,这就是顺序节点
create -s /node_1/node_1_2 "node 2 2"
命令详细解释:摘自 http://blog.csdn.net/heihei36/article/details/70871074
zookeeper 客户端命令详解
简介
查阅了网上相关资料,介绍 zookeeper 客户端命令并不是非常全面,大多数都是简单介绍 ls,get,set,delete,stat 这几个简单命令的,下面我把 help 中的所有命令简单介绍一下以供参考.
首先说明一下如何打开 zk 服务端和客户端,cd 到 zk 安装目录下,运行 bin/zkServer.shstart 即可启动服务端,运行 bin/zkCli.sh -server ip:port 即可启动客户端.
help 命令
显示客户所支持的所有命令,如:
connect 命令
ZooKeeper -server host:port cmd args
connecthost:port
getpath [watch]
lspath [watch]
setpath data [version]
rmrpath
delquota[-n|-b] path
quit
printwatcheson|off
create[-s] [-e] path data acl
statpath [watch]
close
ls2path [watch]
history
listquotapath
setAclpath acl
getAclpath
syncpath
redocmdno
addauthscheme auth
deletepath [version]
setquota-n|-b val path
连接 zk 服务端,与 close 命令配合使用可以连接或者断开 zk 服务端.
如 connect 127.0.0.1:2181
get 命令
获取节点信息,注意节点的路径皆为绝对路径,也就是说必要要从 /(根路径)开始.
如 get /
详解:
hello world
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x5
mtime = Thu Apr 27 15:09:00 CST 2017
pZxid = 0xc
cversion = 1
dataVersion = 2
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 1
hello world 为节点数据信息
cZxid 节点创建时的 zxid
ctime 节点创建时间
mZxid 节点最近一次更新时的 zxid
mtime 节点最近一次更新的时间
cversion 子节点数据更新次数
dataVersion 本节点数据更新次数
aclVersion 节点 ACL(授权信息) 的更新次数
ephemeralOwner 如果该节点为临时节点, ephemeralOwner 值表示与该节点绑定的 session id. 如果该节点不是临时节点, ephemeralOwner 值为 0
dataLength 节点数据长度,本例中为 hello world 的长度
numChildren 子节点个数
ls 命令
获取路径下的节点信息,注意此路径为绝对路径,类似于 linux 的 ls 命令.
如 ls /zookeeper
set 命令
设置节点的数据.
如 set /zookeeper "hello world"
rmr 命令
删除节点命令,此命令与 delete 命令不同的是 delete 不可删除有子节点的节点,但是 rmr 命令可以删除,注意路径为绝对路径.
如 rmr /zookeeper/znode
delquota 命令
删除配额,-n 为子节点个数,-b 为节点数据长度.
如 delquota -n 2,请参见 listquota 和 setquota 命令.
quit 命令
退出.
printwatches 命令
设置和显示监视状态,on 或者 off.
如 printwatches on
create 命令
创建节点,其中 - s 为顺序充点,-e 临时节点.
如 create /zookeeper/node1"test_create" world:anyone:cdrwa
其中 acl 处,请参见 getAcl 和 setAcl 命令.
stat 命令
查看节点状态信息.如 stat /
与 get 命令大体相同,请参见 get 命令.
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x1f
mtime = Thu Apr 27 16:05:14 CST 2017
pZxid = 0xc
cversion = 1
dataVersion = 3
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 1
close 命令
断开客户端与服务端的连接.
ls2 命令
ls2 为 ls 命令的扩展,比 ls 命令多输出本节点信息.
如 ls /zookeeper
history 命令
列出最近的历史命令.
如 history
基本格式为:命令 ID - 命令,可以与 redo 命令配合使用.
- ls /
- ls /
- ls2 /
- history
- listquota /zookeeper
- history
listquota 命令
显示配额.
如 listquota /zookeeper
解释:
absolute path is/zookeeper/quota/zookeeper/zookeeper_limits
Output quota for /zookeepercount=2,bytes=-1
/zookeeper 节点个数限额为 2,长度无限额.
setAcl 命令
设置节点 Acl.
此处重点说一下 acl,acl 由大部分组成:1 为 scheme,2 为 user,3 为 permission,一般情况下表示为 scheme:id:permissions.
其中 scheme 和 id 是相关的,下面将 scheme 和 id 一起说明.
scheme 和 id
world: 它下面只有一个 id, 叫 anyone, world:anyone 代表任何人,zookeeper 中对所有人有权限的结点就是属于 world:anyone 的
auth: 它不需要 id, 只要是通过 authentication 的 user 都有权限(zookeeper 支持通过 kerberos 来进行 authencation, 也支持 username/password 形式的 authentication)
digest: 它对应的 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
getAcl 命令
获取节点 Acl.
如 getAcl /zookeeper/node1
注:可参见 setAcl 命令.
'world,'anyone
: cdrwa
sync 命令
强制同步.
如 sync /zookeeper
由于请求在半数以上的 zk server 上生效就表示此请求生效,那么就会有一些 zk server 上的数据是旧的.sync 命令就是强制同步所有的更新操作.
redo 命令
再次执行某命令.
如 redo 10
其中 10 为命令 ID,需与 history 配合使用.
addauth 命令
节点认证.
如 addauth digest username:password,可参见 setAcl 命令 digest 处.
使用方法:
一,通过 setAcl 设置用户名和密码
setAcl pathdigest:username:base64(sha1(password)):crwda
二,认证
addauth digest username:password
delete 命令
删除节点.
如 delete /zknode1
setquota 命令
设置子节点个数和数据长度配额.
如 setquota -n 4 /zookeeper/node 设置 / zookeeper/node 子节点个数最大为 4
setquota -b 100 /zookeeper/node 设置 / zookeeper/node 节点长度最大为 100
来源: http://www.bubuko.com/infodetail-2458151.html