Zookeeper (二) 安装(单机版、集群版)、常用命令、javaAPI操作(案例源码&安装软件)

tech2022-11-03  109

案例源码gitee地址:https://gitee.com/BanSheng/zookeeper-demo/tree/master/zookeeperdemo

一、 安装 zookeeper

JDK网盘地址

链接:https://pan.baidu.com/s/1tbSJgcAiWBTL1BfZFaOQ-w  提取码:nu3f

Zookeeper网盘地址

链接:https://pan.baidu.com/s/1OAZEedqkwsjqx4ufgFaDWg  提取码:4680

官方资源包可在 zookeeper.apache.com 站点中下载。最新发布版本为:3.6.0。

1 安装单机版

1.1 安装 Linux

1.2 安装 JDK

配置环境变量

export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH

1.3 上传 Zookeeper

1.4解压 Zookeeper 压缩包

[root@localhost temp]# tar -zxf zookeeper-3.6.0.tar.gz [root@localhost temp]# cp zookeeper-3.6.0 /usr/local/zookeeper -r

1.5 Zookeeper 目录结构

1. bin:放置运行脚本和工具脚本, 2. conf:zookeeper 默认读取配置的目录,里面会有默认的配置文件 3. docs:zookeeper 相关的文档 4. lib:zookeeper 核心的 jar 5. logs:zookeeper 日志

1.6配置 Zookeeper

Zookeeper 在启动时默认的去 conf 目录下查找一个名称为 zoo.cfg 的配置文件。在 zookeeper 应用目录中有子目录 conf。其中有配置文件模板:zoo_sample.cfg

cp zoo_sample.cfg zoo.cfg。zookeeper 应用中的配置文件为 conf/zoo.cfg。

修改配置文件 zoo.cfg - 设置数据缓存路径

1.7启动 Zookeeper

默认加载配置文件:./zkServer.sh start:默认的会去 conf 目录下加载 zoo.cfg 配置文件。

指定加载配置文件:./zkServer.sh start 配置文件的路径。

1.8停止 Zookeeper

./zkServer.sh stop

1.9查看 Zookeeper 状态

./zkServer.sh status

1.10使用客户端连接单机版 Zookeeper

1.10.1 连接方式一

bin/zkCli.sh

默认连接地址为本机地址,默认连接端口为 2181

1.10.2 连接方式二

bin/zkCli.sh -server ip:port

连接指定 IP 地址与端口

2 安装集群版

2.1Zookeeper 集群说明

2.1.1 Zookeeper 集群中的角色

Zookeeper 集群中的角色主要有以下三类

2.2集群安装

使用 3 个 Zookeeper 应用搭建一个伪集群。应用部署位置是:192.168.233.130。客户端监听端口分别为:2181、2182、2183。投票选举端口分别为 2881/3881、2882/3882、2883/3883。

tar -zxf zookeeper-3.6.0.tar.gz 将解压后的 Zookeeper 应用目录重命名,便于管理 mv zookeeper-3.6.0 zookeeper01

2.2.1 提供数据缓存目录

在 zookeeper01 应用目录中,创建 data 目录,用于缓存应用运行数据

cd zookeeper01 mkdir data

2.2.2 复制应用

复制两份 Zookeeper 应用。用于模拟集群中的 3 个节点。

cp -r zookeeper01 zookeeper02 cp -r zookeeper01 zookeeper03

2.2.3 提供配置文件

在 zookeeper 应用目录中有子目录 conf。其中有配置文件模板:zoo_sample.cfg

cp zoo_sample.cfg zoo.cfg

zookeeper 应用中的配置文件为 conf/zoo.cfg。

2.2.4 修改配置文件 zoo.cfg - 设置数据缓存路径

dataDir 参数值为应用运行缓存数据保存目录。

2.2.5 提供应用唯一标识

在 Zookeeper 集群中,每个节点需要一个唯一标识。这个唯一标识要求是自然数。且唯一标识保存位置是:数据缓存目录(dataDir=/usr/local/zookeeper/data)的 myid 文件中。其中“数据缓存目录”为配置文件 zoo.cfg 中的配置参数

在 data 目录中创建文件 myid : touch myid

为应用提供唯一标识。本环境中使用 1、2、3 作为每个节点的唯一标识。

vi myid

简化方式为: echo [唯一标识] >> myid。 echo 命令为回声命令,系统会将命令发送的数据返回。 '>>'为定位,代表系统回声数据指定发送到什么位置。 此命令代表系统回声数据发送到 myid 文件中。 如果没有文件则创建文件。

2.2.6 修改配置文件 zoo.cfg - 设置监听客户端、投票、选举端口

vim zoo.cfg

clientPort=2181 #服务端口根据应用做对应修改,zk01-2181,zk02-2182,zk03-2183 server.1=192.168.233.130:2881:3881 server.2=192.168.233.130:2882:3882 server.3=192.168.233.130:2883:3883

2.3编写启动、关闭集群脚本

在 Linux 中可以使用 chmod 命令为文件授权。

chmod 777 文件名

777 表示为文件分配可读,可写,可执行权限。

2.3.1 启动 Zookeeper 集群脚本

zookeeper01/bin/zkServer.sh start zookeeper02/bin/zkServer.sh start zookeeper03/bin/zkServer.sh start

2.3.2 关闭 Zookeeper 集群脚本

zookeeper01/bin/zkServer.sh stop zookeeper02/bin/zkServer.sh stop zookeeper03/bin/zkServer.sh stop

2.4连接集群

可以使用任何节点中的客户端工具连接集群中的任何节点。

./zkCli.sh -server 192.168.233.130:2183

二、 Zookeeper 常用命令

 

1 ls 命令

ls /path

使用 ls 命令查看 zookeeper 中的内容。在 ZooKeeper 控制台客户端中,没有默认列表功能,必须指定要列表资源的位置。 如: ls / 或者 ls /path

2 create 命令

create [-e] [-s] /path [data]

使用 create 命令创建一个新的 Znode。create [-e] [-s] path data - 创建节点,如: create /test 123 创建一个/test 节点,节点携带数据信息 123。 create -e /test 123 创建一个临时节点/test,携带数据为 123,临时节点只在当前会话生命周期中有效,会话结束节点自动删除。create -s /test 123 创建一个顺序节点/test,携带数据 123,创建的顺序节点由 ZooKeeper 自动为节点增加后缀信息,如-/test00000001 等。-e 和-s 参数可以联合使用。

3 get 命令

get [-s] /path

get 命令获取 Znode 中的数据。

get -s /path

-s 查看 Znode 详细信息

oldlu:存放的数据

cZxid:创建时 zxid(znode 每次改变时递增的事务 id)

ctime:创建时间戳

mZxid:最近一次更近的 zxid

mtime:最近一次更新的时间戳

pZxid:子节点的 zxid

cversion:子节点更新次数

dataversion:节点数据更新次数

aclVersion:节点 ACL(授权信息)的更新次数

ephemeralOwner:如果该节点为 ephemeral 节点(临时,生命周期与 session 一样),ephemeralOwner 值表示与该节点绑定的 session id. 如果该节点不是ephemeral 节点, ephemeralOwner 值为 0.

dataLength:节点数据字节数

numChildren:子节点数量

4 set 命令

set /path [data]

添加或修改 Znode 中的值

5 delete 命令

delete /path

删除 Znode。

三、 使用 Java API 操作 Zookeeper

 

1 创建 Znode

1.1创建项目

1.2修改 POM 文件添加依赖

该依赖为基于 Java 语言连接 Zookeeper 的客户端工具

<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.0</version> </dependency>

1.3创建 Znode 并添加数据

/** * 操作 Zookeeper 的 Znode */ public class ZnodeDemo implements Watcher { public static void main(String[] args) throws KeeperException, InterruptedException, IOException { // 创建连接 Zookeeper 对象 ZooKeeper zooKeeper = new ZooKeeper("192.168.233.130:2181,192.168.233.130:2182,192.168.233.130:2183",150000,new ZnodeDemo()); // 创建一个 Znode String path = zooKeeper.create("/bjsxt/test","oldlu".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL); System.out.println(path); } /** * 事件通知回调方法 * @param event */ @Override public void process(WatchedEvent event) { // 获取连接事件 if(event.getState() == Event.KeeperState.SyncConnected){ System.out.println("连接成功"); } } }

2 获取 Znode 中的数据

2.1获取指定节点中的数据

byte[] data= zooKeeper.getData("/bjsxt/test0000000001",new ZnodeDemo(),new Stat()); System.out.println(new String(data));

2.2获取所有子节点中的数据

List<String> list = zooKeeper.getChildren("/bjsxt",new ZnodeDemo()); for(String path :list){ byte[] data= zooKeeper.getData("/bjsxt/"+path,new ZnodeDemo(),null); System.out.println(new String(data)); }

3 设置 Znode 中的值

// 设置 Znode 中的值 Stat stat = zooKeeper.setData("/bjsxt/test0000000001","bjsxt".getBytes(),-1); System.out.println(stat);

4 删除 Znode

zooKeeper.delete("/bjsxt/test0000000001",-1);

案例源码gitee地址:https://gitee.com/BanSheng/zookeeper-demo/tree/master/zookeeperdemo

最新回复(0)