`
forchenyun
  • 浏览: 310252 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Zookeeper ZNode操作

阅读更多

 

Zookeeper API中包如下:

org.apache.zookeeper 
org.apache.zookeeper.data 
org.apache.zookeeper.server 
org.apache.zookeeper.server.quorum 
org.apache.zookeeper.server.upgrade

其中开发者比较常用的包都集中在前两个包中

关于ZooKeeper的安装省略,请参加之前的文章。

下面我们开始用api操作ZooKeeper tree

首先,我们应该新建一个Zookeeper实例:(注意节点创建的时候path命名需要注意,有相关规则的)

ZooKeeper zk = new ZooKeeper("ip:port",3000,new MyWathcer());

 Ipport替换为你Zookeeper serviceip及服务端口。注意一下第三个参数,它是一个watcher,实现了org.apache.zookeeper.Watcher接口(实现它的process方法即可),对于节点的更新删除等操作会通知客户端,这部分可以参考watches的说明。

接下来,我们新建一个节点:

 

Id id = new Id("ip","你的zookeeper server的ip");//注意第一个参数代表通过ip验证
ACL acl1 = new ACL(ZooDefs.Perms.ALL,id);//这里表示具备all权限
List<ACL> list = new ArrayList<ACL>();
list.add(acl1);
System.out.println(zk.create("/zk_heih","yun".getBytes(),list, CreateMode.PERSISTENT));//这里表示创建持久的节点
 

 

Id类实际上是指你要的访问控制列表ACL应用的目标,而ACL代表应用到该节点的操作权限,最后的CreateMode.PERSISTENT代表你的创建节点的类型,是持久的还是瞬时的。最后方法会返回该节点的path。(如果想建立节点为某节点的子节点,那么写完整path即可,如 /zk_test/zk_ heih

下面,我们修改节点数据(data

 

int version = zk.exists("/zk_ heih ", new MyWathcer()).getVersion();
System.out.println(zk.setData("/zk_ heih ", "my".getBytes(), version));
 

 

请注意versionznode在修改时会比较version和服务器上的是否一致,如果不一致的话会抛出异常,当然你也可以将version参数至为-1.那么会匹配所有version,也就是说强制的修改。

然后我们可以查看某节点的数据

Stat stat = new Stat();
byte[] data = zk.getData("/zk_ heih ", new MyWathcer(), stat);//stat会在方法内被修改
System.out.println(new String(data));
System.out.println(stat);
 

方法会给出相关的statstat里面包含了如czid等等,具体参照api

最后我们删除刚才创建的节点:

int version = zk.exists("/zk_ heih ", new MyWathcer()).getVersion();
zk.delete("/zk_ heih ", version);
 

最后,如果你英语够好,还是看官方的文档吧:

ZooKeeper Programmer's Guide

http://hadoop.apache.org/zookeeper/docs/r3.3.0/zookeeperProgrammers.html

 

1
0
分享到:
评论
1 楼 yinshi.nc 2011-10-12  
引用
Id id = new Id("ip","你的zookeeper server的ip");//注意第一个参数代表通过ip验证


这里有问题, 第二个参数应该是你的开发机ip

相关推荐

    java客户端使用api访问zookeeper,增删改查Znode

    java客户端使用api访问zookeeper,增删改查Znode,多有的操作都有同步和异步的方式,代码简单,易懂

    Zookeeper学习笔记.pdf

    ZooKeeper在实现这些服务时,首先它设计一种新的**数据结构——Znode**,然后在该数据结构的基础上定义了一些**原语**,也就是一些关于该数据结构的一些操作。有了这些数据结构和原语还不够,因为我们的ZooKeeper是...

    基于zookeeper集群监测服务器宕机情况,并发邮件通知

    由于项目需要,编写基于zookeeper集群监测服务器宕机...原理:服务器端向zookeeper注册,在znode节点创建文件,zookeeper心跳检测,一旦服务器宕机,znode节点的文件会删除,客户端会响应做出相应的操作,如发邮件通知。

    zookeeper的相关介绍

    ※ zk基础知识介绍 ※ zk数据模型介绍 ※ zk数据模型中znode的介绍 ※ zk数据监听 ※ zk的acl ※ zk单节点基本操作 ※ zk集群操作 ※ zk的java客户端操作

    zookeeper-benchmarkv2

    该基准测试在处理 znode 读取、对单个 znode 的重复写入、znode 创建、对多个 znode 的重复写入和 znode 删除方面练习集成的性能。 这些测试可以通过同步或异步操作来执行。 基准测试使用每个服务器一个线程连接到 ...

    分布式协调工具-ZooKeeper实现动态负载均衡

    2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识  3、节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点) 节点类型  a、Znode有两种类型: 短暂(ephemeral)(create -...

    zkClient:实现zookeeper客户端,实现客户端连接,重连,基本数据操作,监听等功能

    zkclient 项目项目介绍:zkclient 是对zookeeper java客户端进行的封装,主要实现了连接、断线重连,watch事件改为listen监听事件,分布式锁等注意: 使用时需要自行编译安装到maven或打成jar使用使用方式:...

    zk-smoketest:zk-smoketest.py为ZooKeeper集成提供了一个简单的Smoketest客户端

    尝试更改测试中使用的znode的数量和大小,并比较异步延迟和同步延迟(这将使您深入了解网络延迟)。 注意:python的“时间”库用于对操作进行计时,在某些系统上,计时器的分辨率可能低至1秒,具体取决于该平台的...

    Dr11ft#BigDataGuide#Zookeeper(三)1

    1、启动客户端 2、显示所有操作命令 3、查看当前znode中所包含的内容 4、查看当前节点详细数据 5、分别创建2个普通节点 6、获得节点的值 7、创建临时节

    Hbase 基本操作类

    * HBASE_CONFIG.set("zookeeper.znode.parent", "/hbase-unsecure"); conf = HBaseConfiguration.create(HBASE_CONFIG); */ conf = HBaseConfiguration.create(); if("kerberos".equals(conf.get("hbase....

    zookeeperHelper

    zookeeper的创建Znode,设置数据,取数据,以及删除数据的操作

    Hadoop日记Day20---ZooKeeper系列(四)

    第一,我们唯一需要存储的配置数据是字符串,关键字是znode的路径,因此我们在每个znode上存储了一个键/值对。第二,在任何时候只有一个客户端会执行更新操作。除此之外,这个模型看起来就像是有

    基于storm实时热点统计的分布式并行缓存预热

    一、基于nginx+lua完成商品详情页访问流量实时上报kafka的开发 =======================...6、执行预热操作,遍历productid列表,查询数据,然后写ehcache和redis 7、预热完成后,设置taskid对应的预热状态 代码地址:

Global site tag (gtag.js) - Google Analytics