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

章节内容

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

  • ZK创建节点:永久、顺序、临时
  • ZK读取节点:列出、查看、更新
  • ZK删除节点

背景介绍

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

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

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

新建Java工程

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

POM文件

xml 复制代码
<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>

创建回话

java 复制代码
public class Test01 {

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

}

运行程序,结果如下:

创建节点

java 复制代码
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");

    }

}

运行程序,结果如下:

删除节点

java 复制代码
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");
    }

}

运行程序,结果如下:

监听节点

java 复制代码
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);
    }

}

运行程序,结果如下:

监听数据

java 复制代码
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);
    }

}

运行程序,结果如下:

相关推荐
StayInLove6 分钟前
G1垃圾回收器日志详解
java·开发语言
对许10 分钟前
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“
java·log4j
lzhlizihang13 分钟前
【Hive sql 面试题】求出各类型专利top 10申请人,以及对应的专利申请数(难)
大数据·hive·sql·面试题
无尽的大道14 分钟前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
Hsu_kk14 分钟前
Hive 查询各类型专利 Top 10 申请人及对应的专利申请数
数据仓库·hive·hadoop
Tianyanxiao17 分钟前
如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
大数据·人工智能·科技·数据分析·深度优先·零售
大数据编程之光18 分钟前
Hive 查询各类型专利 top10 申请人及专利申请数
大数据·数据仓库·hive·hadoop
杰克逊的日记21 分钟前
Hive详解
数据仓库·hive·hadoop
小鑫记得努力23 分钟前
Java类和对象(下篇)
java
binishuaio27 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git