设为首页 加入收藏

TOP

Hadoop学习(5)-zookeeper的安装和命令行,java操作(二)
2019-09-17 16:03:19 】 浏览:56
Tags:Hadoop 学习 -zookeeper 安装 命令 java 操作
ist;
import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper; import org.junit.Before; import org.junit.Test; public class ZookeeperClientDemo { ZooKeeper zk = null; @Before public void init() throws Exception{ // 构造一个连接zookeeper的客户端对象 zk = new ZooKeeper("hdp-01:2181,hdp-02:2181,hdp-03:2181", 2000, null); } // @Test public void testCreate() throws Exception{ // 参数1:要创建的节点路径 参数2:数据 参数3:访问权限 参数4:节点类型 String create = zk.create("/zkTest", "hello zk".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(create); zk.close(); } // @Test public void testUpdate() throws Exception { // 参数1:节点路径 参数2:数据 参数3:所要修改的版本,-1代表任何版本 zk.setData("/zkTest", "我爱你".getBytes("UTF-8"), -1); zk.close(); } // @Test public void testGet() throws Exception { // 参数1:节点路径 参数2:是否要监听 参数3:所要获取的数据的版本,null表示最新版本 byte[] data = zk.getData("/zkTest", false, null); System.out.println(new String(data,"UTF-8")); zk.close(); } //查子节点 @Test public void testListChildren() throws Exception { // 参数1:节点路径 参数2:是否要监听 // 注意:返回的结果中只有子节点名字,不带全路径 List<String> children = zk.getChildren("/zkTest", false); for (String child : children) { System.out.println(child); } zk.close(); } // @Test public void testRm() throws InterruptedException, KeeperException{ zk.delete("/zkTest", -1); zk.close(); } }

java客户端监听节点是否发生了变化

import java.util.List; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.Watcher.Event.EventType; import org.apache.zookeeper.Watcher.Event.KeeperState; import org.apache.zookeeper.ZooKeeper; import org.junit.Before; import org.junit.Test; public class ZookeeperWatchDemo { ZooKeeper zk = null; @Before public void init() throws Exception { // 构造一个连接zookeeper的客户端对象
        zk = new ZooKeeper("hdp-01:2181,hdp-02:2181,hdp-03:2181", 2000, new Watcher() { @Override public void process(WatchedEvent event) { //如果在连接,并且为该节点的数据变化了
                if (event.getState() == KeeperState.SyncConnected && event.getType() == EventType.NodeDataChanged) { System.out.println(event.getPath()); // 收到的事件所发生的节点路径
                    System.out.println(event.getType()); // 收到的事件的类型
                    System.out.println("数据变化了啊....."); // 收到事件后,我们的处理逻辑

                    try { zk.getData("/mygirls", true, null); } catch (KeeperException | InterruptedException e) { e.printStackTrace(); } //如果在连接,并且是字节点变化了
                }else if(event.getState() == KeeperState.SyncConnected && event.getType() == EventType.NodeChildrenChanged){ System.out.println("子节点变化了......"); } } }); } @Test public void testGetWatch() throws Exception { //此时监听的逻辑就是new ZooKeeper时的watcher,这里也可以自己写一个watcher, //但如果自己写的话,就会只运行一次了,不能重复监听
        byte[] data = zk.getData("/mygirls", true, null); // 监听节点数据变化
 List<String> children = zk.getChildren("/mygirls", true); //监听节点的子节点变化事件
 System.out.println(new String(data, "UTF-8")); //这时候启动的监听线程为一个守护线程,当主线程结束后,就会退出,所以这里让主线程睡眠时间,当主线程结束,他也就没了 //这个守护线程使我们在创建的zookeeper的时候就创建的,
 Thread.sleep(Long.MAX_VALUE); } }

 

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mac下安装mongodb数据库教程 下一篇Windows下备份mysql

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目