本文最后更新于 320 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
zoookeeper常用的shell命令概述
一.znode的基础操作
1.创建znode
zookeeper使用create命令创建znode
create命令常用的选项:
-e:
创建临时znode。
-s:
创建带有编号的znode。
温馨提示:
直接在命令行输入"create"指令就可以看到其对应的帮助信息哟~
2.查看znode
使用ls命令查看某个znode下的子znode信息,常用选项如下:
-w:
启用监听器watch功能。
-s:
查看stat命令的相关信息且查看给定znode路径的子节点信息。
-R:
对查看znode且查看给定znode路径的子节点信息。
使用get命令可以查看znode中存储的数据。
-s:
查看stat命令的相关信息。
-w:
启用监听器watch功能。
使用stat命令可以查看znode的元数据信息。
cZxid:
数据节点创建时的事物ID。
ctime:
数据节点创建时的时间。
mZxid:
数据节点最后一次更新时的事物ID。
mtime:
数据节点最后一次更新时的时间。
pZxid:
数据节点的子节点最后一次被修改时的事务ID。
cversion:
子节点的更改次数。
dataVersion:
数据节点的更改次数,即维护的是一个数据版本号。
aclVersion:
节点的ACL的更改次数。
ephemeralOwner:
如果节点是临时节点,则表示创建该节点的会话SessionID,如果节点是持久节点,则该属性值为0。
dataLength:
数据内容的长度。
numChildren:
数据节点当前的子节点的数量。
温馨提示:
(1)直接在命令行输入"ls","get"指令就可以看到其对应的帮助信息哟~
(2)比较老的版本还在用"ls2"命令查看,zookeeper 3.7版本中已将其移除
3.修改znode数据
zookeeper使用set命令修改znode数据,常用命令选项如下所示:
-s:
修改数据后,返回znode的stat信息。
-v:
修改数据时可以指定子节点更改的次数版本("dataVersion"),这和ES的乐观锁机制有点类似哟~
4.删除znode
zookeeper使用delete命令删除znode,要求该znode没有子znode节点哟。
zookeeper使用deleteall命令删除包含子znode节点,生产环境中慎用哟,有点类似于linux的"rm -rf"指令。
5.课堂练习
(1)创建/oldboyedu/linux/zhibo # 有序,临时znode
(2)创建/oldboyedu/python/pachong # 临时znode
(3)创建/oldboyedu/java/javase # 有序,非临时znode
(4)创建/oldboyedu/java/bigdata # 非临时znode
(5)创建/oldboyedu/java/bigdata/hdfs # 持久znode
(6)创建/oldboyedu/java/bigdata/yarn # 临时znode
(7)创建退出当前会话,再重新登录,验证现有的znode
(8)创建删除/oldboyedu/java这个znode
二.监听器案例
1.使用"get -w path"注册监听器,监听znode的数据变化
get /hadoop
set /hadoop "HADOOP2021"
get -w /hadoop # 注意哈,此时我用"-w"监听了当前的znode。HADOOP2021
set /hadoop "SPARK" # 当我们修改znode的数据后,在当前终端会触发相应的通知机制。
set /hadoop "FLINK" # 当我们在此修改时,发现并没有新的通知机制,说明"-w"选项只能触发一次哟~
2.使用"stat -w path"注册监听器,监听znode的数据变化
stat -w /hadoop
set /hadoop "Storm"
set /hadoop "HBase"
3.使用"ls -w path"注册监听器,监听znode的子节点数量的变化
ls -w /hadoop # 注意哈,此处我启用了监听器
set /hadoop "HADOOP" # 修改当前znode数据发现并没有触发监听器的通知机制
set /hadoop/hdfs "NN DN JN" # 修改子znode的数据发现依旧是没有触发监听器机制
create /hadoop/hive "Hive" # 但当我们在监听的znode节点下创建(你也可以尝试一下删除)新节点时,就会触发监听器的通知机制。
三.删除监听器
get -w /oldboy # 注意哈,此处使用了get指令添加了一个监视器
removewatches /oldboy # 此处我又使用"removewatches"指令删除了监听器
set /oldboy "OLDBOY" # 当我们修改znode发现并没有触发监听器,这正是由于上面我们删除监听器导致的。