大数据生态之zookeeper(API)
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,在使用maven项目编写zookeeper程序时导入相关的jar包: org.apache.zookeeper zookeeper
千家信息网最后更新 2026年11月03日大数据生态之zookeeper(API)
在使用maven项目编写zookeeper程序时导入相关的jar包:
org.apache.zookeeper zookeeper 3.4.10 1.创建集群连接
//集群节点节点,之间使用逗号隔开 static String url="hadoop01:2181,hadoop02:2181,hadoop03:2181"; //集群编程入口 static ZooKeeper zk; //超时时间 static long time=5000; //使用静态代码块,初始化ZooKeeper对象 static { try { zk=new ZooKeeper(url,(int)time,null); } catch (IOException e) { e.printStackTrace(); } }2.创建节点
public void createZnode(ZooKeeper zk){ //必须使用绝对路径 String path="/test/test04"; //在创建创建节点时,必须指定节点内容 byte data[]="I am a good boy!".getBytes(); try { /** * zk.create的四个参数表示: * arg1:节点路径 * arg2:节点存放的内容 * arg3:权限设置:默认 * arg4:节点类型(永久无顺序、永久有顺序、临时无顺序、临时有顺序) */ String info = zk.create(path, data, ZooDefs.Ids.OPEN_ACL_UNSAFE , CreateMode.EPHEMERAL); System.out.println(info==null?"fail":"success"); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }3.查看节点信息
public void getInfo(ZooKeeper zk,String path){ try { /** * zk.getData(path, null, null); * 参数1:节点的绝对路径 string * 参数2:节点的监听 * 参数3:节点的状态对象 */ byte[] data = zk.getData(path, null, null); System.out.println("节点:"+path+"的信息是:"+(new String(data))); } catch (KeeperException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }4.修改节点数据
public void updateData(ZooKeeper zk,String path){ try { /** * zk.setData(path, data, version); * path:修改内容的节点 * data:更新的数据 * version:修改的版本:如果不知道,写-1,表示最新版本 */ zk.setData(path,"haha".getBytes(),-1); } catch (Exception e) { e.printStackTrace(); } }5.删除节点
public void deleteZnode(ZooKeeper zk,String path){ try { /** * zk.delete(path, version); * path:路径 * version:删除的版本,如果不知道,写-1,表示删除最新版本 int */ zk.delete(path,-1); } catch (Exception e) { e.printStackTrace(); } }6.获取znode节点的权限信息
public void getACL(ZooKeeper zk,String path){ try { /** * zk.getACL(path,stat) * path:路径 * stat:状态信息 */ List acls = zk.getACL(path, null); for(ACL acl:acls){ System.out.println(acl.getPerms()); } } catch (Exception e) { e.printStackTrace(); } } 7.获取子节点
public void getChildren(ZooKeeper zk, String path) { try { //判断节点是否存在 if (zk.exists(path, null) == null) { List childrens = zk.getChildren(path, null); for(String children:childrens){ //注意这里面收到的都是当前节点下的子节点的相对路径 System.out.println(children); } } } catch (Exception e) { e.printStackTrace(); } } 8.znode的测试监听
public class testZKWatcher { static String url="hadoop01:2181,hadoop02:2181,hadoop03:2181"; static ZooKeeper zk; static long time=5000; static { try { zk=new ZooKeeper(url,(int) time,null); } catch (Exception e) { e.printStackTrace(); } } //设置监听 public static void liisten(String path,ZooKeeper zk){ try { zk.exists(path, new Watcher() { @Override //WatchedEvent event监听事件对象 public void process(WatchedEvent event) { //节点触发的类型(新增、修改、创建...) Event.EventType type = event.getType(); //获取触发的节点的路径 event.getPath(); System.out.println("触发事件的路径"+path+",触发的事件的类型"+type); } }); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { String path="/test/test01"; liisten(path,zk); try { //触发监听 zk.create("jj","zzy".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL); } catch (Exception e) { e.printStackTrace(); } }}| 这里需要注意的是,监听事件是一次性的,如果需要一直监听,那么需要设置循环监听。
节点
路径
监听
事件
信息
参数
版本
顺序
内容
对象
类型
集群
数据
权限
状态
永久
一次性
之间
代码
入口
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡豆
广州互联网科技公司
西安互联网科技
奇酷互联网科技
南京欣网互联网科技
广州互联网络科技有限公司
善班互联网科技有限公司
天下捷融互联网科技
常德市电业局互联网科技部
世界互联网科技公司市值排名
互联网科技公司实习生
湖南一路畅行互联网科技
新兴科技互联网创新大赛颁奖典礼
内蒙古九一互联网科技
互联网科技股为什么大涨
上海创道互联网络科技有限公司
科技互联网行业投资研究
互联网科技手抄报图片
互联网科技收购价值
瑞安市蟠桃会互联网科技有限公司
互联网高科技
广州万易互联网科技有限公司
电子科技大学互联网
互联网科技大会
创业天下互联网科技有限公司
互联网和黑科技的看法
富国互联网科技002692
湖北辰鑫科技互联网
恒生科技互联网指数十大成分股
武汉亿视互联网科技有限公司