ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-06-26 10:33:57  阅读:157  来源: 互联网

标签:zookeeper 操作命令 创建 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,所以学习成本较高。

标签:zookeeper,操作命令,创建,Zookeeper,相对路径,数据,节点,客户端
来源: https://www.cnblogs.com/studyjobs/p/16413055.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有