大数据生态之zookeeper(API)
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,在使用maven项目编写zookeeper程序时导入相关的jar包: org.apache.zookeeper zookeeper
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
德惠有名的网络技术诚信服务
厦门亿联网络技术笔试
江苏网络软件开发收购价
网络安全大会感悟
学校校校园网络安全应急预案
收费网络安全运行情况
我的世界服务器管理员如何回档
wind数据库怎么下载
服务器安全图片素材
我的世界剑仙服务器
网络文学与网络安全
长沙望城区软件开发公司
网上查重会不会泄露数据库
网络安全的历史背景
32岁学数据库
nba数据库哪个app好
明日之后各个服务器的任务
辅助域名服务器
揽众网络安全绘画
9月1日网络安全法利好上市公司
上海熠信网络技术有限公司
后会无期铃声软件开发
软件开发工程师典型生活
汕头销售软件开发公司
数据库下载论坛
闪耀计划软件开发
c 数据库比较大小写
网页的后端是数据库
网络技术应用题视频讲解
iqoo7小白测评数据库