在zookeeper的bin目录下,输入./zkServer.sh start和./zkCli.sh启动服务端和客户端,然后我们就可以进行zookeeper的基本操作了。如果是windows,请参考前面章节zookeeper快速入门一:zookeeper安装与启动
目录
一、节点的增删改查
二、zookeeper的其他命令
2.1 ls path:列出path下的文件
2.2 stat path:查看节点状态
2.3 ls2 path:列出path节点的子节点及状态
三、其他
zookeeper节点的增删改查命令很简单,唯一需要注意的是create命令有两个参数,-s代表顺序节点,-e代表临时节点。
我们先用create /temp 123命令创建一个名为temp的znode节点,123是这个节点保存的data值。
用get /temp命令查看
如果你输入的是get temp,那么会出现Command failed: java.lang.IllegalArgumentException: Path must start with /character错误,这是因为在zookeeper中,没有相对路径的概念,所有的节点都需要用绝对路径表示,也即所有节点名称都会以“/”开头。
如果我们要创建临时节点,则给create命令增加一个-e的参数。
修改temp节点的数据,set /temp 456
再用get /temp查看
可以看到,/temp节点的数据已经从123变成了456。在zookeeper中,对于数据的修改都是全量修改,没有只修改某一部分这种说法。这也是为什么zookeeper的修改命令是set而不是update的原因。
需要注意的是,但我们修改了数据之后,可以看到mZxid(修改事务id)已经从原来的0X26变成了0x27。
如果要删除某个节点,则用delete path即可。
需要注意的是:
set path data [version]命令,如果我们多次修改,会发现 dataVersion ,也就是数据版本,在不停得发生变化(自增)如果我们在set的时候手动去指定了版本号,就必须和上一次查询出来的结果一致,否则 就会报错。
这个可以用于我们在修改节点数据的时候,保证我们修改前数据没被别人修改过。因为如果别人修改过了,我们这次修改是不会成功的
delete path [version]
删除指定节点数据,其version参数的作用于set指定一致
与linux命令类似,ls命令用于列出给定路径下的zookeeper节点
我们查看持久节点temp和临时节点short的状态,主要不同是画红线部分,从ephemeralOwner的值可以判断这个节点是持久节点还是临时节点。0X0代表的是持久节点。如果节点为临时节点,那么它的值为这个节点拥有者的session ID。
我们先给temp节点创建一个child1的子节点,接着用ls2 /temp查看它的子节点和状态。
我们可以输入-h获取zookeeper的所有命令