大数据生态之zookeeper(API)
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,在使用maven项目编写zookeeper程序时导入相关的jar包: org.apache.zookeeper zookeeper
千家信息网最后更新 2025年12月02日大数据生态之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安全错误
数据库的锁怎样保障安全
银行用的服务器一般用哪个公司的
我的世界开辅助玩服务器
河南网络软件开发创新服务
目前数据库发展现状
linux服务器磁盘满怎么解决
猫眼电影数据库
数字化转型中网络安全问题分析
sds数据库
软件开发迭代平台
微信数据库用的是什么
深圳火龙网络技术
软件开发交接内容
恋爱请响铃的软件开发者是谁
徐州电脑网络安全
计算机网络技术与应用考研方向
如何设计数据库的用户模式对象
怎么把文件传到服务器
自由幻想游戏服务器无法连接
梦幻的服务器为啥进不去
安徽正规软件开发服务有哪些
洛阳软件开发价格
北京开源软件开发erp
设计一个数据库需要什么
苍南雅鸽网络技术有限公司
数据库附加到服务器失败
服务器网络连接不通怎么办
工行软件开发中心面试通知
怎么保持wifi网络安全
微信小程序请求宝塔数据库
服务器的数据存储