学科分类
目录
Hadoop技术栈

通过Shell命令操作Zookeeper

上面我们已经详细介绍客户端操作Zookeeper的常见命令。本节,我们主要是通过Shell命令来操作Zookeeper。首先,启动Zookeeper服务;其次,连接Zookeeper服务。具体命令如下:

$ zkServer.sh start

$ zkCli.sh -server localhost:2181

连接成功后,系统会输出Zookeeper集群的相关配置信息,并在屏幕输出“welcome to Zookeeper!”等信息。如图1所示。

img

图1 Zookeeper服务连接成功

从图1可知,我们已经成功连接到Zookeeper服务。接下来,通过Shell命令操作Zookeeper。具体操作如下。

1.显示所有操作命令

在客户端输入help,屏幕会输出所有可用的Shell命令,如图2所示。

img

图2 help命令

2.查看当前Zookeeper中所包含的内容

在客户端输入ls /,屏幕会输出Zookeeper中所包含的内容,如图3所示。

img

图3 ls命令

小提示:

根目录下有一个自带的/zookeeper子节点,它来保存Zookeeper的配额管理信息,不要轻易删除。

3.查看当前节点数据

在客户端输入ls2 /,屏幕会输出当前节点数据并且能看到更新次数等数据,如图4所示。

img

图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所示。

img

图5 创建节点命令

5.获取节点

在命令行输入获取节点的命令,具体命令格式如下:

$ ls path [watch]

$ get path [watch]

$ ls2 path [watch]

其中,ls和ls2命令在前面我们已经进行演示,现在演示get命令。get命令可以获取Zookeeper指定节点的数据内容和属性信息。屏幕输出的效果,如图6所示。

img

图6 get命令

6.修改节点

在命令行输入修改节点的命令,具体命令格式如下:

$ set path data [version]

其中,data就是要修改的新内容,version表示数据版本。接下来,我们要对前面创建的临时节点testnode-temp进行修改操作。屏幕输出的效果,如图7所示。

img

图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所示。

img

图8 监听节点

8.删除节点

在命令行输入删除节点的命令,具体命令格式如下:

普通删除的命令

$ delete path [version]

递归删除的命令

$ rmr path [version]

其中,使用delete命令删除节点时,若要删除的节点存在子节点,就无法删除该节点,必须先删除子节点,才可删除父节点;使用rmr命令递归删除节点,不论该节点下是否存在子节点,可以直接删除。delete删除命令演示,对testnode-temp节点进行删除操作,屏幕输出你的效果,如图5-13所示。rmr递归删除命令演示,对testnode-temp节点进行删除操作。屏幕输出的效果,如图9所示。

img

图9 delete命令

从图9可知,testnode-temp节点已经被删除。

img

图10 rmr命令

从图10可知,testnode-temp节点已经被删除。

点击此处
隐藏目录