ZooKeeper的Java Api初探
来源:互联网 发布:linux新手教程 编辑:程序博客网 时间:2024/05/09 14:55
ZooKeeper的Java Api初探
首先,新建一个Java项目,然后创建一个lib
文件夹,并将zookeeper目录下的zookeeper-3.4.9.jar以及ZooKeeper/lib下的jar包拷贝到项目的lib
下。如下图所示。
然后把lib下的jar包都加入bulidpath下面。
然后我们创建一个简单的ZooKeeper客户端,用JUnit框架来体验一些Java Api.代码如下:
package com.mrbcy.bigdata.zk;import java.io.IOException;import java.util.List;import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.WatchedEvent;import org.apache.zookeeper.Watcher;import org.apache.zookeeper.ZooDefs.Ids;import org.apache.zookeeper.data.Stat;import org.apache.zookeeper.ZooKeeper;import org.junit.Before;import org.junit.Test;import com.sun.org.apache.bcel.internal.generic.NEW;public class SimpleZKClient { private static String connectString = "amaster:2181,anode1:2181,anode2:2181"; private static int sessionTimeout = 2000; private ZooKeeper zkClient = null; @Before public void init() throws IOException{ zkClient = new ZooKeeper(connectString , sessionTimeout, new Watcher(){ @Override public void process(WatchedEvent event) { System.out.println(event.toString()); System.out.println(event.getType() + "---" + event.getPath()); } }); } // 创建节点 @Test public void testCreate() throws Exception{ // 参数1是节点的路径;参数2是节点的数据;参数3是节点的权限;参数4是节点的类型 String nodeCreated = zkClient.create("/eclipse", "hellozk".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); System.out.println(nodeCreated); } @Test // 判断节点是否存在 public void testExist() throws Exception{ // 获取元数据 Stat stat = zkClient.exists("/eclipse", false); System.out.println(stat); } @Test // 获取节点的子节点列表 public void getChildren() throws Exception{ /* * getChildren时注册了监听器,但是需要注意的是这个监听器只生效一次。当"/"目录下的节点发生变化时zkClient注册的监听器会收到一次通知。 * 要永久监听"/"目录的变化,可以在zkClient监听器收到通知时再次getChildren,并注册监听器即可。 */ List<String> children = zkClient.getChildren("/", true); for(String child : children){ System.out.println(child); } // 删除一个节点来测试监听 zkClient.delete("/eclipse", -1); Thread.sleep(1000); } @Test // 获取znode的数据 public void getData() throws Exception{ byte[] data = zkClient.getData("/eclipse", null, null); System.out.println(new String(data)); } @Test // 删除znode public void deleteZnode() throws Exception{ zkClient.delete("/eclipse", -1); // 获取元数据 Stat stat = zkClient.exists("/eclipse", false); System.out.println(stat); } @Test // 修改znode public void setData() throws Exception{ zkClient.setData("/eclipse","啊哈哈哈".getBytes(), -1); byte[] data = zkClient.getData("/eclipse", null, null); System.out.println(new String(data)); }}
如果出现connection lost的错误,检查zoo.cfg下面指定的地址:
server.1=amaster:2888:3888server.2=anode1:2888:3888server.3=anode2:2888:3888
如果是这样的话,ZooKeeper是绑定在主机名上的,因此必须通过主机名连接,ZooKeeper会拒绝IP地址的访问。同样,如果zoo.cfg里面指定的是IP地址,代码中也要用IP地址。
0 0
- ZooKeeper的Java Api初探
- Zookeeper 初体验之——JAVA API 初探
- Zookeeper 初体验之——JAVA API 初探
- Zookeeper 初体验之——JAVA API 初探
- Zookeeper 初体验之——JAVA API 初探
- zookeeper的Java客户端API
- Zookeeper Java API的使用
- Zookeeper Java Api的使用
- zookeeper的java客户端api
- 【Zookeeper学习】(一):Zookeeper的Java API
- Zookeeper Java客户端API的使用
- zookeeper Java客户端API的使用方法
- zookeeper(二) java客户端api的使用
- zookeeper的java API 接口(一)
- zookeeper的java客户端api学习笔记
- Hdfs Java API初探
- Zookeeper Java API
- java 操作 zookeeper API
- C++建立查找删除节点二叉排序树
- 欢迎使用CSDN-markdown编辑器
- 461. Hamming Distance [LeetCode]
- 每天一个linux命令(1)
- nyoj26_孪生素数(筛选法求素数)
- ZooKeeper的Java Api初探
- 隐公元年
- 通俗理解卷积神经网络
- Java内存模型 读笔
- 双tag线段树
- Shadowsocks初识及VPN和VPS区别
- 比例运算和求和电路
- 史上最简单的 Spring MVC 教程(十)
- 整理--linux内核的gpiolib学习