整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

14.2.5删除组

hadoop 花牛 13℃ 0评论

为了使这个例子比较完整,让我们来看看如何删除一个组。ZooKeeper类提供了一个deleteO方法,该方法有两个参数:节点路径和版本号。如果所提供的版本号与znode的版本号一致,ZooKeeper会删除这个znode。这是一种乐观的加锁机制,使客户端能够检测出对znode的修改冲突。通过将版本号设置为-1,可以绕过这个版本检测机制,不管znode的版本号是什么而直接将其删除。

ZooKeeper不支持递归的删除操作,因此在删除父节点之前必须先删除子节点。在范例M-5中,DeleteGroup类用于删除一个组及其所有成员。

范例14-5.用于删除一个组及其所有成员的程序

public class DeleteGroup extends ConnectionWatcher {
    public void delete(String groupName) throws KeeperException, 
    InterruptedException {
        String path = "/" + groupName;
        try {
            List<String> children = zk.getChildren(path, false); 
            for (String child : children) { 
            zk.delete(path + "/" + child, -1〉;
            zk.delete(path, -1);
			}
        } catch (KeeperException.NoNodeException e) {
            System.out.printf("Group %s does not exist\n", groupName); 
            System.exit(1);
        }
    }
    public static void main(String[] args) throws Exception { 
        DeleteGroup deleteGroup = new DeleteGroup(); 
        deleteGroup.connect(args[0]); 
        deleteGroup.delete(args[1]); 
        deleteGroup.close();
    }
}

最后,我们可以删除之前所创建的zoo组:

% java DeleteGroup localhost zoo 
% java ListGroup localhost zoo
Group zoo does not exist

转载请注明:全栈大数据 » 14.2.5删除组

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址