zookeeper递归删除znode节点java Demo
来源:互联网 发布:开源云服务器软件 编辑:程序博客网 时间:2024/04/30 07:55
因为zookeeper只允许删除叶子节点,如果要删除非叶子节点,只能使用递归,zookeeper的文件结构是树型结构,和linux的目录结构相似,所有程序和我之前写的递归删除本地文件和递归删除hdfs上的文件是差不多的,这里也分享下吧。
下面是zookeeper的存储结构示意图:
如果要删除上面方块节点,必须递归删除,圆形的叶子节点可以直接删除。
- 1.MyWatch类
/** * 自定义watch类,不做任何事 * @author LiJie * */class MyWatch implements Watcher { @Override public void process(WatchedEvent event) { // DO Nothing }}
- 2.主程序
package com.lijie.zk1;import java.io.IOException;import java.util.List;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooKeeper;/** * zookeeper znode递归删除 * @author LiJie * */public class RmrDemo { private static final String connectString = "hadoop01:2181,hadoop02:2181,hadoop03:2181"; private static final int sessionTimeout = 2000; private static ZooKeeper zookeeper = null; /** * main函数 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { //调用rmr,删除所有目录 rmr("/"); } /** * 递归删除 因为zookeeper只允许删除叶子节点,如果要删除非叶子节点,只能使用递归 * @param path * @throws IOException */ public static void rmr(String path) throws Exception { ZooKeeper zk = getZookeeper(); //获取路径下的节点 List<String> children = zk.getChildren(path, false); for (String pathCd : children) { //获取父节点下面的子节点路径 String newPath = ""; //递归调用,判断是否是根节点 if (path.equals("/")) { newPath = "/" + pathCd; } else { newPath = path + "/" + pathCd; } rmr(newPath); } //删除节点,并过滤zookeeper节点和 /节点 if (path != null && !path.trim().startsWith("/zookeeper") && !path.trim().equals("/")) { zk.delete(path, -1); //打印删除的节点路径 System.out.println("被删除的节点为:" + path); } } /** * 获取Zookeeper实例 * @return * @throws IOException */ public static ZooKeeper getZookeeper() throws IOException { zookeeper = new ZooKeeper(connectString, sessionTimeout, new MyWatch()); return zookeeper; }}
- 3.创建几个测试目录
[zk: localhost:2181(CONNECTED) 0] ls /[zookeeper][zk: localhost:2181(CONNECTED) 1] create /lijie 1 Created /lijie[zk: localhost:2181(CONNECTED) 2] create /lijie/test1 2Created /lijie/test1[zk: localhost:2181(CONNECTED) 3] create /lijie/test1/test2 3Created /lijie/test1/test2[zk: localhost:2181(CONNECTED) 4] create /lijie/test1/test3 4Created /lijie/test1/test3
- 4.运行程序,查看结果
0 0
- zookeeper递归删除znode节点java Demo
- Zookeeper节点Znode
- Zookeeper的节点znode
- zookeeper 之znode 节点
- Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)
- zookeeper递归删除所有节点
- zookeeper生成节点、删除节点 For Java
- ZooKeeper的名字空间节点(有关znode的一切)
- Zookeeper.NET Client(三)【Znode节点增删改查】
- zookeeper api 操作znode
- zookeeper监控znode
- ZooKeeper的Znode剖析
- ZooKeeper的Znode剖析
- 利用ZooKeeper的Java API来创建一个znode
- Java递归删除树形结构父节点
- znode节点创建
- zookeeper创建目录节点DEMO
- 添加删除 节点demo
- springmvc_mybatis_demo 单元测试(业务逻辑)
- Java中stringbuilder与stringbuffer
- iOS异步加载网络图片
- jQuery -- 选择器
- Unsupported major.minor version 51.0(jdk版本错误)
- zookeeper递归删除znode节点java Demo
- linux 自己常用命令
- win7 32位 中VC6.0 visual C++6.0无法打开文件和 向工程中添加文件的解决办法
- 应用内购买--验证
- u-boot 环境变量参数设置
- XML接口实现
- 商品表的sql
- Windows上获取文件大小的几种方法及获取文件夹大小方法
- 长途旅行