Zookeeper 客户端常用操作命令介绍

Zookeeper 是动物管理员,用来管理大象(Hadoop)、蜜蜂(Hive)、小猪(Pig)等大数据相关的组件。

ZooKeeper 是一个开源分布式应用程序协调服务,是 Apache Hadoop 项目下的一个子项目,以树形结构存储数据的组件服务。

Zookeeper 常用于配置管理、集群管理、分布式锁等应用场景,比如阿里的 Dubbo 采用 Zookeeper 作为注册中心进行集群管理。

有关 Zookeeper 的详细内容,这里不再介绍,请参考官网 https://zookeeper.apache.org/index.html


一、Zookeeper 的安装

从官网上下载 Zookeeper 压缩包,无论是在 Windows 还是 Linux ,只需要解压缩即可完成安装。请在安装 Zookeeper 以前确保已经安装了 Jdk 环境,至少是 Jdk8 或以上的版本。为了演示方便,这里仅介绍 Windows 下采用 nssm 安装成 Windows Service 的过程,方便大家快速入门。

首先去官网下载 Zookeeper,下载地址为:https://zookeeper.apache.org/releases.html

我下载的是一个稳定版本的压缩包文件:apache-zookeeper-3.7.1-bin.tar.gz

然后在自己电脑的硬盘中解压缩到 d 盘下的 develop 目录下,由于个人习惯,不想使用那么长的目录名,所以将文件夹 apache-zookeeper-3.7.1-bin 的名称修改为 zookeeper,并在 zookeeper 目录下创建了一个名称为 zkdata 的文件夹,用来存放 zookeeper 的数据,如下图所示:

image

然后进入 conf 目录下,复制 zoo_sample.cfg 文件,将复制后的文件名称修改为 zoo.cfg ,因为 Zookeeper 以 zoo.cfg 作为默认的配置文件名称。打开 zoo.cfg 文件,一般情况下只需要注意两个配置项即可,如下所示:

# zookeeper 数据存放的目录,这里需要修改一下
# 我修改为在 zookeeper 下自己创建的 zkdata 文件夹
dataDir=D:/Develop/zookeeper/zkdata

# zookeeper 的客户端连接端口,默认是 2181
# 这里我就不改了,就使用默认的端口
clientPort=2181

修改完 zoo.cfg 的配置之后,进入 bin 目录,对于 windows 操作系统来说,运行 zkServer.cmd 即可启动 Zookeeper。

image

如果你想将 Zookeeper 安装成 Windows 服务,可以使用 nssm.exe 组件来实现。

nssm.exe 的下载地址为:http://www.nssm.cc/download

当前最新版本是 2.24,下载完成后,解压缩会发现有分为 32 位和 64 位,
我的电脑是 64 位,因此我将 64 位的 nssm.exe 复制到 zookeeper 的 bin 目录下(D:\Develop\zookeeper\bin)。

然后打开控制台,将 nssm.exe 拖动控制台窗口,后面跟上 install 参数,运行命令:

D:\Develop\zookeeper\bin\nssm.exe install

弹出如下窗口,然后录入相关的信息:

image

Application Path:填写 zkServer.cmd 的绝对路径。

Startup directory:这个是 Zookeeper 的启动目录。

Arguments:启动时指定的参数,这里不需要任何参数。

Service name:服务的名字,这个名字会显示在 Windows 服务中,这里取名为 ZookeeperService。

以上参数填写好后,点击 Install service 即可。安装成功后,到打开 服务 管理器,启动服务即可。

image


二、Zookeeper 操作命令

ZooKeeper 是一个以树形结构存储数据的组件服务,类似 Linux 文件系统,拥有一个层次化结构。

每一个节点被称为 ZNode,可以存储节点信息和不大于1M的数据存储。

Zookeeper 节点可以分为 4 类:

  • PERSISTENT 持久化节点,这个是默认创建的节点

  • EPHEMERAL 临时节点,命令参数 -e ,此种节点当客户端断开连接候,节点会自动清除

  • PERSISTENT_SEQUENTIAL 持久化顺序节点,命令参数 -s,创建的节点名称自动增加了有序编号

  • EPHEMERAL_SEQUENTIAL 临时顺序节点,命令行参数 -es,具有编号特征并在客户端连接断开候自动清除

进入 Zookeeper 的 bin 目录,双击运行 zkCli.cmd 启动客户端,默认自动连接本机的 Zookeeper 服务。

通过输入 help 命令,即可查看操作 Zookeeper 的所有命令帮助信息。

常用的客户端操作 Zookeeper 的命令如下:

# 获取帮助
help

# 客户端断开连接
quit

# 查看子节点
# 比如 ls / 表示查看根节点下的子节点
ls 父节点全路径或相对路径

# 创建子节点(默认是持久化节点)
# 比如 create /jobs 表示在 / 下创建 jobs 子节点
# 可以给节点存储数据,也可以不存储数据
# 比如 create /jobs perfect 表示在 / 下创建 jobs 子节点并存储的数据为 perfect 
create 子节点全路径或相对路径 [数据内容]

# 获取节点的数据
# 比如 get /jobs 表示获取 jobs 节点中存储的数据,应该会获取到 perfect
get 节点全路径或相对路径

# 设置或修改节点的数据值
# 比如 set /jobs greate 表示将 jobs 节点的数据设置为 greate
set 节点全路径或相对路径 [数据内容]

# 删除单个节点
# 比如 delete /test 表示删除 / 下面的 test 节点
# 但是如果 test 节点下面有子节点的话,该命令就无法删除 test 节点了
delete 节点全路径或相对路径

# 删除单个节点及其下面的所有包含的节点
# 比如 deleteall /test 表示删除 / 下面的 test 以及 test 下的所有节点
deleteall 节点全路径或相对路径

# 创建临时节点,增加 -e 参数
# 当客户端断开与 zookeeper 的拦截后,所创建的临时节点会自动被删除掉
create -e 子节点全路径或相对路径 [数据内容]

# 创建顺序节点,增加 -s 参数
# 创建的节点名称,会自动被添加上数字编号
# 比如多次运行 create -s /aaa 后,通过 ls / 查看 / 下面的子节点列表
# 会发现类似 /aaa0000000001 /aaa0000000002 /aaa0000000003 的顺序节点
create -s 子节点全路径或相对路径 [数据内容]

# 创建临时顺序节点,增加 -es 参数
# 临时顺序节点,兼有临时节点和顺序节点的特性,常用于分布式所的应用场景
create -es 子节点全路径或相对路径 [数据内容]

# 查看一个节点的详细信息
ls -s 节点全路径或相对路径

# 获取到的内容如下:
# czxid:节点被创建的事务ID 
# ctime:节点的创建时间 
# mzxid:最后一次被更新的事务ID 
# mtime:节点的修改时间 
# pzxid:子节点列表最后一次被更新的事务ID
# cversion:子节点的版本号 
# dataversion:数据版本号 
# aclversion:权限版本号 
# ephemeralOwner:用于临时节点,表示临时节点的事务ID
# dataLength:节点存储的数据的长度 
# numChildren:当前节点的子节点个数 

以上命令是操作 Zookeeper 的常用命令,平时很少使用,毕竟对于开发人员来说,最主要还是通过 Java 代码去操作 Zookeeper。

了解上面这些命令,有助于在开发过程中,查看和操作 Zookeeper 中的数据,以及在运维过程中临时使用。


总结:通过上面的介绍,我们发现 Zookeeper 本质上也是一种 NoSQL 数据库,类似于 Redis ,只不过两者的数据结构和设计理念不一样,应用场景不一样。NoSQL 数据库不像关系型数据库那样,有统一的 SQL 操作语法,每种 NoSQL 数据库都有不同的操作命令和 api,所以学习成本较高。

posted @ 2022-06-26 10:14  乔京飞  阅读(10553)  评论(0编辑  收藏  举报