教程目录
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
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 “”
此时可以一步一步来,先创建/shaonaiyi1create /shaonaiyi1 “”
再创建/shaonaiyi1/shao1create /shaonaiyi1/shao1 “”
g. 删除节点delete /shaonaiyi1/shao1
发现里面已经没有shao1
节点了ls /shaonaiyi1
再将shao1
子节点创建回来create /shaonaiyi1/shao1 “”
删除shaonaiyi1
节点,发现无法删除:delete /shaonaiyi1
此时应该递归存在子节点的父节点:rmr /shaonaiyi1
此时查看/shaonaiyi1
也已经不在了ls /
i. 退出zkCli.shquit
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
- 思考1:连接时尝试只连接slave1或者slave2,看是否一样可以对整个Zookeeper进行操作?
- 思考2:启动Zookeeper时,尝试按下面顺序启动,查看每次启动集群的角色情况,再尝试一遍,观察每次执行的结果一不一样:
启动与查看角色语句如下:zkServer.sh start
zkServer.sh status
情形一:master、slave1、slave2
情形二:slave1、master、slave2
情形三:slave2、slave1、master
结果如下,请思考选举出来的leader有什么原则:
情形一:
情形二:
情形三:
作者简介:邵奈一
全栈工程师、市场洞察者、专栏编辑
| 公众号 | 微信 | 微博 | CSDN | 简书 |
福利:
邵奈一的技术博客导航
邵奈一 原创不易,如转载请标明出处。