Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
章节内容
上节我们完成了如下的内容:
- ZK创建节点:永久、顺序、临时
- ZK读取节点:列出、查看、更新
- ZK删除节点
背景介绍
这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。
之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。
- 2C4G 编号 h121
- 2C4G 编号 h122
- 2C2G 编号 h123
新建Java工程
这里就跳过了,新建一个Maven工程。
POM文件
org.apache.zookeeper zookeeper 3.8.4 com.101tec zkclient 0.11创建回话
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 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); } }运行程序,结果如下:
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!






