通过Shell命令操作Zookeeper
上面我们已经详细介绍客户端操作Zookeeper的常见命令。本节,我们主要是通过Shell命令来操作Zookeeper。首先,启动Zookeeper服务;其次,连接Zookeeper服务。具体命令如下:
$ zkServer.sh start
$ zkCli.sh -server localhost:2181
连接成功后,系统会输出Zookeeper集群的相关配置信息,并在屏幕输出“welcome to Zookeeper!”等信息。如图1所示。
图1 Zookeeper服务连接成功
从图1可知,我们已经成功连接到Zookeeper服务。接下来,通过Shell命令操作Zookeeper。具体操作如下。
1.显示所有操作命令
在客户端输入help,屏幕会输出所有可用的Shell命令,如图2所示。
图2 help命令
2.查看当前Zookeeper中所包含的内容
在客户端输入ls /,屏幕会输出Zookeeper中所包含的内容,如图3所示。
图3 ls命令
小提示:
根目录下有一个自带的/zookeeper子节点,它来保存Zookeeper的配额管理信息,不要轻易删除。
3.查看当前节点数据
在客户端输入ls2 /,屏幕会输出当前节点数据并且能看到更新次数等数据,如图4所示。
图4 ls2命令
4.创建节点
在命令行输入创建节点的命令,具体命令格式如下:
$ create [-s] [-e] path data acl
其中,-s表示是否开启节点的序列化特性,-e表示开启临时节点特性,若不指定,则表示永久节点;path表示创建的路径,data表示创建节点的数据,这是因为Znode可以像目录一样存在也可以像文件一样保存数据;acl用来进行权限控制(一般不需要了解)。
创建序列化永久节点:
$ create -s /testnode test
创建临时节点:
$ create -e /testnode-temp testtemp
创建永久节点:
$ create /testnode-p testp
接下来,我们以创建临时节点为例进行演示,屏幕输出的效果,如图5所示。
图5 创建节点命令
5.获取节点
在命令行输入获取节点的命令,具体命令格式如下:
$ ls path [watch]
$ get path [watch]
$ ls2 path [watch]
其中,ls和ls2命令在前面我们已经进行演示,现在演示get命令。get命令可以获取Zookeeper指定节点的数据内容和属性信息。屏幕输出的效果,如图6所示。
图6 get命令
6.修改节点
在命令行输入修改节点的命令,具体命令格式如下:
$ set path data [version]
其中,data就是要修改的新内容,version表示数据版本。接下来,我们要对前面创建的临时节点testnode-temp进行修改操作。屏幕输出的效果,如图7所示。
图7 set命令
从图7可知,通过修改节点命令,将testnode-temp节点上的dataVersion版本变为1,并且再次查看节点信息,看到节点内容也变成123。
7.监听节点
监听节点也就是监听节点的变化,可以概括为三个过程。客户端向服务端注册Watch、服务端事件发生触发Watch、客户端回调Watch得到触发事件的情况。
首先,客户端向服务端注册Watch,在服务器hadoop01客户端的命令行输入命令,具体命令如下:
$ get /testnode-temp watch
其次,服务端发生事件触发Watcher,在服务器hadoop02客户端的命令行输入命令,具体命令如下:
$ set /testnode-temp testwatch
最后,客户端回调Watch得到触发事件的情况。屏幕输出的效果,如图8所示。
图8 监听节点
8.删除节点
在命令行输入删除节点的命令,具体命令格式如下:
普通删除的命令
$ delete path [version]
递归删除的命令
$ rmr path [version]
其中,使用delete命令删除节点时,若要删除的节点存在子节点,就无法删除该节点,必须先删除子节点,才可删除父节点;使用rmr命令递归删除节点,不论该节点下是否存在子节点,可以直接删除。delete删除命令演示,对testnode-temp节点进行删除操作,屏幕输出你的效果,如图5-13所示。rmr递归删除命令演示,对testnode-temp节点进行删除操作。屏幕输出的效果,如图9所示。
图9 delete命令
从图9可知,testnode-temp节点已经被删除。
图10 rmr命令
从图10可知,testnode-temp节点已经被删除。