Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点

章节内容

上节我们完成了如下的内容:


ZK创建节点:永久、顺序、临时

ZK读取节点:列出、查看、更新

ZK删除节点

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。

之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。


2C4G 编号 h121

2C4G 编号 h122

2C2G 编号 h123

新建Java工程

这里就跳过了,新建一个Maven工程。

POM文件

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.8.4</version>
</dependency>
<dependency>  
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.11</version>
</dependency>

创建回话

public class Test01 {

    public static void main(String[] args) {
        ZkClient zkClient = new ZkClient("h121.wzk.icu:2181");
        System.out.println("ZooKeeper session created.");
    }

}

运行程序,结果如下:

创建节点

public class Test01 {

    public static void main(String[] args) {
        ZkClient zkClient = new ZkClient("h121.wzk.icu:2181");
        System.out.println("ZooKeeper session created.");
        // true 则可以递归创建目录
        zkClient.createPersistent("/wzk-java/temp", true);
        System.out.println("ZooKeeper craete ZNode");

    }

}

运行程序,结果如下:

删除节点

public class Test01 {

    public static void main(String[] args) {
        ZkClient zkClient = new ZkClient("h121.wzk.icu:2181");
        System.out.println("ZooKeeper session created.");
        // true 则可以递归创建目录
        zkClient.createPersistent("/wzk-java/temp", true);
        System.out.println("ZooKeeper create ZNode");
        // 删除数据
        zkClient.deleteRecursive("/wzk-java/temp");
        System.out.println("ZooKeeper delete recursive");
    }

}

运行程序,结果如下:

监听节点

public class Test02 {

    public static void main(String[] args) throws Exception {
        ZkClient zkClient = new ZkClient("h121.wzk.icu:2181");
        // 监听器 不会对当前目录进行监控 只会监听子目录变化!!!
        zkClient.subscribeChildChanges("/wzk-data", new IZkChildListener() {
            @Override
            public void handleChildChange(String parentPath, List<String> currentChilds) throws Exception {
                System.out.println("parentPath: " + parentPath + ", " + currentChilds);
            }
        });

        // 添加数据
        zkClient.createPersistent("/wzk-data/test-data", true);
        Thread.sleep(1000);

        // 删除数据
        zkClient.deleteRecursive("/wzk-data/test-data");
        Thread.sleep(1000);
    }

}

运行程序,结果如下:

监听数据

public class Test03 {

    public static void main(String[] args) throws Exception {
        ZkClient zkClient = new ZkClient("h121.wzk.icu:2181");
        // 序列化
        zkClient.setZkSerializer(new SerializableSerializer());

        // 判断节点是否存在
        final boolean exists = zkClient.exists("/wzk-data/test-data");
        if (!exists) {
            // 不存在则创建出来
            zkClient.createPersistent("/wzk-data/test-data", true);
            System.out.println("ZooKeeper create ZNode");
        }

        zkClient.subscribeDataChanges("/wzk-data/test-data", new IZkDataListener() {
            @Override
            public void handleDataChange(String dataPath, Object data) throws Exception {
                System.out.println("数据改变: " + dataPath + ", " + data);
            }

            @Override
            public void handleDataDeleted(String dataPath) throws Exception {
                System.out.println("数据删除: " + dataPath);
            }
        });

        // 更新数据 出发监听器
        final Object o = zkClient.readData("/wzk-data/test-data");
        zkClient.writeData("/wzk-data/test-data", "更新了数据");
        Thread.sleep(1000);

        zkClient.deleteRecursive("/wzk-data/test-data");
        Thread.sleep(1000);
    }

}

运行程序,结果如下:

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
13天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
1月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
41 2
|
1月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
41 1
|
1月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
44 1
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
2月前
|
存储 负载均衡 Dubbo
分布式-Zookeeper(一)
分布式-Zookeeper(一)
|
4月前
|
监控 NoSQL Java
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
分布式锁实现原理问题之ZooKeeper的观察器(Watcher)特点问题如何解决
|
2月前
分布式-Zookeeper-数据订阅
分布式-Zookeeper-数据订阅
|
2月前
|
监控
分布式-Zookeeper-Zab协议
分布式-Zookeeper-Zab协议