大数据生态之管理员(API)

  

在使用maven项目编写动物园管理员程序时导入相关的jar包:

  
 <代码> & lt; dependency>
  & lt; groupId> org.apache.zookeeper
  & lt; artifactId> zookeeper
  & lt; version> 3.4.10
  & lt;/dependency>  
  <人力资源/>   

1。创建集群连接

  
 <代码>//集群节点节点,之间使用逗号隔开
  静态字符串url=" hadoop01:2181、hadoop02:2181 hadoop03:2181”;//集群编程入口
  静态饲养员zk;//超时时间
  静态长时间=5000;//使用静态代码块,初始化动物园管理员对象
  静态{
  尝试{
  zk=new管理员(url (int)时间,空);
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  } 
  

2。创建节点

  
 <代码>公共空createZnode(饲养员zk) {//必须使用绝对路径
  字符串路径="/测试/test04”;//在创建创建节点时,必须指定节点内容
  字节数据[]="我是一个好男孩!”.getBytes ();
  尝试{/* *
  * zk.create的四个参数表示:
  * __arg1:节点路径
  *最长:节点存放的内容
  *长度:权限设置:默认
  * arg4:节点类型(永久无顺序,永久有顺序,临时无顺序,临时有顺序)
  */字符串信息=zk。创建(路径、数据ZooDefs.Ids.OPEN_ACL_UNSAFE
  ,CreateMode.EPHEMERAL);
  System.out.println(信息==null ?“失败”,“成功”);
  }捕捉(KeeperException e) {
  e.printStackTrace ();
  }捕捉(InterruptedException e) {
  e.printStackTrace ();
  }
  } 
  

3。查看节点信息

  
 <代码>公共空getInfo (zk饲养员,字符串路径){
  尝试{/* *
  
  * zk。getData(路径,空,空);
  *参数1:节点的绝对路径字符串
  *参数2:节点的监听
  *参数3:节点的状态对象
  */byte [] data=https://www.yisu.com/zixun/zk.getData(路径,空,空);
  system . out。println(“节点:“+ +路径”的信息是:”+(新字符串(数据)));
  }捕捉(KeeperException e) {
  e.printStackTrace ();
  }捕捉(InterruptedException e) {
  e.printStackTrace ();
  }
  } 
  

4。修改节点数据

  
 <代码>公共空updateData (zk饲养员,字符串路径){
  尝试{/* *
  * zk。setData(路径、数据版本);
  *路径:修改内容的节点
  *数据:更新的数据
  *版本:修改的版本:如果不知道,写1,表示最新版本
  */zk.setData(路径,“哈哈”.getBytes (), 1);
  }捕捉(异常e) {
  e.printStackTrace ();
  }
  } 
  

5。删除节点

  
 <代码>公共空deleteZnode (zk饲养员,字符串路径){
  尝试{/* *
  * zk.delete(路径、版本);
  *路径:路径
  *版本:删除的版本,如果不知道,写1,表示删除最新版本int
  */zk.delete(路径,1);
  }捕捉(异常e) {
  e.printStackTrace ();
  }
  } 
  

6。获取znode节点的权限信息

  
 <代码>公共空getACL (zk饲养员,字符串路径){
  尝试{/* *
  * zk.getACL(路径,统计)
  *路径:路径
  *统计:状态信息
  */Listacl=zk。getACL(路径,null);
  (ACL ACL: ACL) {
  System.out.println (acl.getPerms ());
  }
  }捕捉(异常e) {
  e.printStackTrace ();
  }
  } 
  

7。获取子节点

  
 <代码>公共空getChildren (zk饲养员,字符串路径){
  尝试{//判断节点是否存在
  如果(zk。存在(路径,null)==null) {
  List儿童=zk。调用getChildren(路径,null);
  (字符串儿童:儿童){//注意这里面收到的都是当前节点下的子节点的相对路径
  System.out.println(孩子);
  }
  }
  }捕捉(异常e) {
  e.printStackTrace ();
  }
  } 
  

8. znode的测试监听

  
 <代码>公共类testZKWatcher {
  静态字符串url=" hadoop01:2181、hadoop02:2181 hadoop03:2181”;
  静态饲养员zk;
  静态长时间=5000;
  静态{
  尝试{
  zk=new管理员(url (int)时间,空);
  }捕捉(异常e) {
  e.printStackTrace ();
  }
  }//设置监听
  公共静态孔隙liisten (String路径,饲养员zk) {
  尝试{
  zk。存在(路径,新观察家(){
  @Override//WatchedEvent事件监听事件对象
  公共空间过程(WatchedEvent事件){//节点触发的类型(新增,修改,创建……)
  事件。EventType type=event.getType ();//获取触发的节点的路径
  event.getPath ();
  System.out.println(“触发事件的路径”+路径+”,触发的事件的类型”+类型);
  }
  });
  }捕捉(异常e) {
  e.printStackTrace ();
  }
  }
  
  公共静态void main (String [] args) {
  字符串路径="/测试/test01”;
  liisten(路径,zk);
  尝试{//触发监听
  zk.create (“jj”、“zzy”.getBytes (),
  ZooDefs.Ids.OPEN_ACL_UNSAFE CreateMode.EPHEMERAL);
  }捕捉(异常e) {
  e.printStackTrace ();
  }
  }
  }

大数据生态之管理员(API)