0x00 教程内容
- zkCli.sh的启动与帮助
- zkCli.sh客户端的使用
Zookeeper的安装请参考教程:D003 复制粘贴玩大数据之安装与配置Zookeeper集群
PS:Zookeeper的zkCli.sh的命令与Linux的命令类似,上手也非常简单。
0x01 zkCli.sh的启动与帮助
1. 启动
a. 在三台节点上均执行
zkServer.sh start
b. 启动master上执行
zkCli.sh -server master:2181
2. 查看帮助命令
a. 查看命令具体操作
h
0x02 zkCli.sh客户端的使用
1. zkCli.sh基础操作
a. 查看根路径有哪些节点
ls /
b. 创建一个节点
create /shaonaiyi man
c. 获取节点/shaonaiyi
的数据值
get /shaonaiyi
讲解:
cZxid 创建该节点的事物ID ctime 创建该节点的时间 mZxid 更新该节点的事物ID mtime 更新该节点的时间 pZxid 操作当前节点的子节点列表的事物ID(这种操作包含增加子节点,删除子节点) cversion 当前节点的子节点版本号 dataVersion 当前节点的数据版本号 aclVersion 当前节点的acl权限版本号 ephemeralowner 当前节点的如果是临时节点,该属性是临时节点的事物ID,0x0表示非临时节点 dataLength 当前节点的d的数据长度 numchildren 当前节点的子节点个数
d. 给节点/shaonaiyi
设置值
set /shaonaiyi goodman
再获取节点/shaonaiyi
的数据值
get /shaonaiyi
e. 创建三个/shaonaiyi
节点的子节点(shao1
、shao2
、shao3
)
create /shaonaiyi/shao1 “shao1”
create /shaonaiyi/shao2 “”
create /shaonaiyi/shao3 “”
f. 创建一个不存在节点的子节点,会报错
create /shaonaiyi1/shao1 “”
此时可以一步一步来,先创建/shaonaiyi1
create /shaonaiyi1 “”
再创建/shaonaiyi1/shao1
create /shaonaiyi1/shao1 “”
g. 删除节点
delete /shaonaiyi1/shao1
发现里面已经没有shao1
节点了
ls /shaonaiyi1
再将shao1
子节点创建回来
create /shaonaiyi1/shao1 “”
删除shaonaiyi1
节点,发现无法删除:
delete /shaonaiyi1
此时应该递归存在子节点的父节点:
rmr /shaonaiyi1
此时查看/shaonaiyi1
也已经不在了
ls /
i. 退出zkCli.sh
quit
2. zkCli.sh进阶操作
a. 创建临时节点(-e)
create -e /shaonaiyi/e-shao “”
查看节点:
ls /shaonaiyi
b. 创建顺序节点(-s)
create -s /shaonaiyi/s-shao “”
查看节点:
ls /shaonaiyi
发现名字并不是s-shao
,而是自动加上了后缀。
此时,再创建几个同名的节点
create -s /shaonaiyi/s-shao “”
create -s /shaonaiyi/s-shao “”
create -s /shaonaiyi/s-shao “”
再查看一下,发现节点后缀自动累加:
ls /shaonaiyi
c. 创建临时顺序节点 (-e -s)
create -e -s /shaonaiyi/es-shao “”
ls /shaonaiyi
d. 退出客户端,再重新登录,发现创建的临时节点已经不存在(刚刚的临时节点有e-shao
、es-shao0000000009
)
ls /shaonaiyi
0xFF 总结
思考1:连接时尝试只连接slave1或者slave2,看是否一样可以对整个Zookeeper进行操作?
思考2:启动Zookeeper时,尝试按下面顺序启动,查看每次启动集群的角色情况,再尝试一遍,观察每次执行的结果一不一样:
启动与查看角色语句如下:
zkServer.sh start
zkServer.sh status
情形一:master、slave1、slave2
情形二:slave1、master、slave2
情形三:slave2、slave1、master
结果如下,请思考选举出来的leader有什么原则:
情形一:
情形二:
情形三: