zookeeper的java api操作

创建会话:

Zookeeper(String connectString,int sessionTimeout,Watcher watcher)

Zookeeper(String connectString,int sessionTimeout,Watcher watcher,boolean canBeReadOnly)

Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPasswd)

Zookeeper(String connectString,int sessionTimeout,Watcher watcher,long sessionId,byte[] sessionPasswd,boolean canBeReadOnly)

参数说明:

connectString -- host:port[,host:port][basePath] 指定的服务器列表,多个host:port之间用英文逗号分隔。还可以可选择的指定一个基路径,如果指定了一个基路径,则所有后续操作基于这个及路径进行。

sessionTimeOut -- 会话超时时间。以毫秒为单位。客户端和服务器端之间的连接通过心跳包进行维系,如果心跳包超过这个指定时间则认为会话超时失效。

watcher -- 指定默认观察者。如果为null表示不需要观察者。

canBeReadOnly -- 是否支持只读服务。只当一个服务器失去过半连接后不能再进行写入操作时,是否继续支持读取操作。略

sessionId、SessionPassword -- 会话编号 会话密码,用来实现会话恢复。

**注意,整个创建会话的过程是异步的,构造方法会在初始化连接后即返回,并不代表真正建立好了一个会话,此时会话处于"CONNECTING"状态。

**当会话真正创建起来后,服务器会发送事件通知给客户端,只有客户端获取到这个通知后,会话才真正建立。

代码:

//TODO

创建节点:

String create(final String path,byte data[],List<ACL> acl,CreateMode createMode);//同步方式创建

void create(final String path,byte data[],List<ACL> acl,CreateMode createMode,StringCallback cb,Object ctx);//异步方式创建

参数说明:

path 要创建的数据节点的路径

data [] 节点创建时初始数据内容

acl 节点acl安全策略

createMode 创建模式

PERSISTENT 持久

PERSISTENT_SEQUENTIAL 持久顺序

EPHEMERAL 临时

EPHEMERAL_SEQUENTIAL 临时顺序

cb 回调接口

ctx 传递对象,用来在回调方法中使用 通常是个上下文对象

**注意:不支持递归创建,即不能在无父节点的情况下创建出子节点

**尝试创建已经存在的节点将失败并抛出异常

**在不需要进行任何权限控制时,只需传入Ids.OPEN_ACL_UNSAFE即可

代码:

//TODO

删除节点:

public void delete(final String path,int version)

public void delete(final String path,int version,VoidCallback cb,Object ctx)

**注意:无法删除存在子节点的节点,即如果要删除一个节点,必须要先删除其所有子节点

读取数据:

getChildren

//同步方式

List<String> getChildren(final String path,Watcher watcher)

List<String> getChildren(String path,boolean watch)

List<String> getChildren(final String path,Watcher watcher,Stat stat)

List<String> getChildren(String path,boolean watch,Stat stat)

//异步方式

void getChildred(final String path,Watcher watcher,ChildrenCallback cb,Object ctx)

void getChildred(String path,boolean watch,ChildrednCallback cb,Object ctx)

void getChildred(final String path,Watcher watcher,Children2Callback cb,Object ctx)

void getChildred(String path,boolean watch,Children2Callback cb,Object ctx)

参数说明:

path 要创建的数据节点的路径

watcher 观察者,一旦在本子节点获取之后,子节点列表发生变更,服务器端向客户端发送消息,触发watcher中的回调。注意,仅仅是通知而已,如果需要新的子节点列表,需要自己再次去获取。允许传入null。

watch 表明是否需要注册一个Watcher。为true则通知默认到默认watcher,如果为false则不使用

cb 回掉函数

ctx 上下文对象

stat 指定数据节点的状态信息。用法是在接口中传入一个旧的stat变量,该stat变量会在方法执行过程中,被来自服务端响应的新stat对象替换。

getData

//同步方式

byte [] getData(final String path,Watcher watcher, Stat stat)

byte [] getData(String path,boolean watch, Stat stat)

//异步方式

void getData(final String path,Watcher watcher, DataCallback cb,Object ctx)

void getData(String path,boolean watch, DataCallback cb,Object ctx)

*可以通过注册Watcher进行监听,一旦该节点数据被更新会通知客户端

更新数据

//同步方式

Stat setData(final String path,byte data[],int version)//version可以传入-1,表明要基于最新版本进行更新操作

//异步方式

void setData(final String path,byte data[],int version,StatCallback cb,Object ctx)

检查节点是否存在

//同步方式

public Stat exists(final String path,Watcher watcher)

public Stat exists(String path,boolean watch)

//异步方式

public Stat exists(final String path,Watcher watcher,StatCallback cb,Object ctx)

public Stat exists(String path,boolean watch,StatCallback cb,Object ctx)

*可以通过注册Watcher进行监听,一旦节点被创建、删除、数据被更新都会通知客户端

zookeeper权限控制:

addAuthInfo(String schema,byte [] auth)

参数说明;

schema 权限模式,可以是world auth digest ip super,我们使用digest

byte[] auth 权限控制标识,由"foo:123".getByte()方式组成,后续操作只有auth值相同才可以进行

**注意删除操作,如果在增加节点时指定了权限,则对于删除操作,认为权限加在了子节点上,删除当前结点不需要权限,删除子节点需要权限。

时间: 2024-12-09 01:37:33

zookeeper的java api操作的相关文章

Zookeeper客户端java代码操作

Zookeeper客户端java代码操作 上篇博客记录了shell命令操作zookeeper集群的方式,这次尝试采用java代码来操作.通过查阅API,发现并不困难. 1. 首先获得客户端与服务器的连接 //zookeeper客户端 private ZooKeeper zkCli; //连接地址 private static final String CONNECT_STRING = "hadoop102:2181,hadoop103:2181,hadoop104:2181"; //s

Java API操作HDFS

HDFS是存储数据的分布式文件系统,对HDFS的操作,就是对文件系统的操作,除了用HDFS的shell命令对文件系统进行操作,我们也可以利用Java API对文件系统进行操作,比如文件的创建.删除.修改权限等等,还有文件夹的创建.删除.重命名等等. 使用Java API对文件系统进行操作主要涉及以下几个类: 1.Configuration类:该类的对象封装了客户端或者服务端的配置. 2.FileSystem类:该类的对象是一个文件系统对象,可以利用该对象的一些方法来对文件进行操作,FileSys

Hadoop读书笔记(三)Java API操作HDFS

Hadoop读书笔记(一)Hadoop介绍:http://blog.csdn.net/caicongyang/article/details/39898629 Hadoop读书笔记(二)HDFS的shell操作:http://blog.csdn.net/caicongyang/article/details/41253927 JAVA URL 操作HDFS OperateByURL.java package hdfs; import java.io.InputStream; import jav

HDFS基础和java api操作

1. 概括 适合一次写入多次查询情况,不支持并发写情况 通过hadoop shell 上传的文件存放在DataNode的block中,通过linux shell只能看见block,看不见文件(HDFS将客户端的大文件存放在很多节点的数据块中,Block本质上是一个逻辑概念,它是hdfs读写数据的基本单位) HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间 2. fs 可以使用hdfs shell操作hdfs,常用 fs命令如下: eg: hadoop fs -cat fi

使用java api操作Hadoop文件 Robbin

1 package cn.hadoop.fs; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.net.URI; 6 import java.net.URISyntaxException; 7 8 import org.apache.hadoop.conf.Configuration; 9 import org.apache.hadoop.fs.FSDataOutputStream; 10 i

hive-通过Java API操作

通过Java API操作hive,算是测试hive第三种对外接口 测试hive 服务启动 1 package org.admln.hive; 2 3 import java.sql.SQLException; 4 import java.sql.Connection; 5 import java.sql.ResultSet; 6 import java.sql.Statement; 7 import java.sql.DriverManager; 8 9 public class testHiv

大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 Elasticsearch 的特点1.7 Elasticsearch 的核心概念1.7.1 近实时1.7.2 Cluster(集群)1.7.3 Node(节点)1.7.4 Index(索引 --> 数据库)1.7.5 Type(类型 --> 表)1.7.6 Document(文档 -->

Java API操作ZooKeeper

创建会话 1 package org.zln.zk; 2 3 import org.apache.zookeeper.WatchedEvent; 4 import org.apache.zookeeper.Watcher; 5 import org.apache.zookeeper.ZooKeeper; 6 7 import java.io.IOException; 8 9 /** 10 * Created by sherry on 16/8/27. 11 */ 12 public class

HBase 6、用Phoenix Java api操作HBase

开发环境准备:eclipse3.5.jdk1.7.window8.hadoop2.2.0.hbase0.98.0.2.phoenix4.3.0 1.从集群拷贝以下文件:core-site.xml.hbase-site.xml.hdfs-site.xml文件放到工程src下 2.把phoenix的phoenix-4.3.0-client.jar和phoenix-core-4.3.0.jar添加到工程classpath 3.配置集群中各节点的hosts文件,把客户端的hostname:IP添加进去