zoukankan      html  css  js  c++  java
  • 大数据学习之zookeeper客户端的命令行及API操作18

    九:客服端的命令行操作

    1)启动客户端

    zkCli.sh

    (1)查看帮助

    help

    3)查看当前znode所包含的内容

    ls /

    4)创建节点

    create /hunterhenshuai 18

    5)创建短暂znode

    create -e /itstar hunter

    6)创建带序号znode

    create -s /bigdata hunter

    7)创建短暂带序号

    create -e -s /bigdata hunter

    8)查看此节点的详细信息

    ls2 /

    9)获得节点值监听

    get /hunterhenshuai watch

    10)监听路径

    ls / watch

    11)修改znode数据

    set /hunterhenshuai iiiii

    12)删除节点

    delete /hunterhenshuai

    13)递归删除

    rmr /delireba

    14)查看节点状态信息

    stat /

    十:客户端API

    1:zookeeper的基本客服端操作(增删改查)

    package com.dawn.zk;
    
    import java.io.IOException;
    import java.util.List;
    
    import org.apache.zookeeper.CreateMode;
    import org.apache.zookeeper.KeeperException;
    import org.apache.zookeeper.WatchedEvent;
    import org.apache.zookeeper.Watcher;
    import org.apache.zookeeper.ZooDefs.Ids;
    import org.apache.zookeeper.ZooKeeper;
    import org.apache.zookeeper.data.Stat;
    import org.junit.Before;
    import org.junit.Test;
    
    /**
     * @author Dawn
     * @date 2019年5月17日08:48:03
     * @version 1.0
     * zookeeper的基本客服端操作
     */
    public class ZKclient {
    	
    	private String connecting="bigdata11:2181,bigdata12:2181,bigdata13:2181";
    	private int sessionTimeout=3000;//会话超时时间 3秒
    	ZooKeeper zkCli=null;
    	
    	//初始化客户端
    	@Before
    	public void init() throws IOException {
    		zkCli=new ZooKeeper(connecting, sessionTimeout, new Watcher() {
    			
    			//回调监听
    			@Override
    			public void process(WatchedEvent event) {
    				// TODO Auto-generated method stub
    				System.out.println(event.getPath()+"	"+event.getState()+"	"+event.getType());
    				
    				List<String> children;
    				try {
    					children = zkCli.getChildren("/", true);
    					
    					for(String v:children) {
    						System.out.println(v);
    					}
    				} catch (KeeperException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} catch (InterruptedException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    				
    				
    			}
    		});	
    	}
    	
    	//2:创建子节点 相当于命令 create /haha more smile
    	@Test
    	public void createNode() throws KeeperException, InterruptedException {
    		/**
    		 * CreateMode.PERSISTENT 创建模式。永久性的创建(不加任何参数)
    		 * 
    		 * create -e /itstar hunter 创建临时节点
    		 * create -e -s /bigdata hunter  )创建短暂带序号
    		 */
    		String path = zkCli.create("/xixi", "nb".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    		System.out.println(path);
    	}
    	
    	
    	//3:获取子节点  相当于命令: ls /
    	@Test
    	public void getChild() throws KeeperException, InterruptedException {
    		List<String> children = zkCli.getChildren("/", true);
    		
    		for(String v:children) {
    			System.out.println(v);
    		}
    		
    		//长期监听
    		Thread.sleep(Long.MAX_VALUE);
    	}
    	
    
    	//4:删除节点
    	@Test
    	public void rmChildDate() throws InterruptedException, KeeperException {
    		//删除具有给定路径的节点。如果存在这样的节点,并且给定的版本与节点的版本匹配(如果给定的版本为-1,
    		//则与任何节点的版本匹配),则调用将成功。
    		
    //		byte[] data = zkCli.getData("/bbq", true, null);
    //		System.out.println(new String(data));
    		zkCli.delete("/haha", -1);
    	}
    	
    	//5:修改数据
    	@Test
    	public void  setDate() throws KeeperException, InterruptedException {
    		zkCli.setData("/dawn", "nb!".getBytes(), -1);
    	}
    	
    	//6:判断节点是否存在
    	@Test
    	public void testExist() throws KeeperException, InterruptedException {
    		Stat rs = zkCli.exists("/haha", false);
    		System.out.println(rs==null ? "不存在" : "存在");
    	}
    	
    }
    

      

    2:监听数据测试

    package com.dawn.zk;
    
    import java.io.IOException;
    
    import org.apache.zookeeper.KeeperException;
    import org.apache.zookeeper.WatchedEvent;
    import org.apache.zookeeper.Watcher;
    import org.apache.zookeeper.ZooKeeper;
    
    /**
     * @author Dawn
     * @date 2019年5月17日09:21:09
     * @version 1.0
     * 监听数据测试,
     * 尽管设置了Thread.sleep(Long.MAX_VALUE);。想进行永久监听。结果还是监听一次
     */
    public class WatchDemo {
    
    	public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
    		ZooKeeper zkCli = new ZooKeeper("bigdata11:2181,bigdata12:2181,bigdata13:2181", 3000, new Watcher() {
    			
    			//监听回调
    			@Override
    			public void process(WatchedEvent event) {
    				// TODO Auto-generated method stub
    				
    			}
    		});
    		
    		byte[] data = zkCli.getData("/dawn", new Watcher() {
    			
    			//监听的具体内容
    			@Override
    			public void process(WatchedEvent event) {
    				System.out.println("监听路径:"+event.getPath());
    				System.out.println("监听类型:"+event.getType());
    				System.out.println("数据被一个陌生人改变了!!");
    			}
    		}, null);
    		
    		System.out.println(new String(data));
    		
    		Thread.sleep(Long.MAX_VALUE);
    	}
    }
    

      

    3:监听目录

    package com.dawn.zk;
    
    
    import java.io.IOException;
    import java.util.List;
    
    import org.apache.zookeeper.KeeperException;
    import org.apache.zookeeper.WatchedEvent;
    import org.apache.zookeeper.Watcher;
    import org.apache.zookeeper.ZooKeeper;
    
    /**
     * @author Dawn
     * @date 2019年5月17日09:30:33
     * @version 1.0
     * 监听目录  
     * 尽管设置了Thread.sleep(Long.MAX_VALUE);。想进行永久监听。结果还是监听一次
     */
    
    public class WatchDemo1 {
    	
    	static List<String> children = null;
    	public static void main(String[] args) throws IOException, KeeperException, InterruptedException {
    		
    
    		ZooKeeper zkCli = new ZooKeeper("bigdata11:2181,bigdata12:2181,bigdata13:2181", 3000, new Watcher() {
    				
    				//监听回调
    				@Override
    				public void process(WatchedEvent event) {
    					System.out.println("正在监听中.....");
    				}
    			});
    		
    			//监听目录
    			children = zkCli.getChildren("/", new Watcher() {
    			
    			@Override
    			public void process(WatchedEvent event) {
    				
    				System.out.println("监听路径为:" + event.getPath());
    				System.out.println("监听的类型为:" + event.getType());
    				System.out.println("数据被2货修改了!!!");
    				
    				for(String c:children) {
    					System.out.println(c);
    				}
    			}
    		});
    			
    			Thread.sleep(Long.MAX_VALUE);
    		
    	}
    	
    		
    }
    

      

  • 相关阅读:
    Flink中的广播流之BroadcastStream
    啊。。这是为什么。。 花甜的工作笔记
    我那庞大身躯,脆弱心灵的3250 花甜的工作笔记
    好吧,我承认,我不是一个专一的人。。。 花甜的工作笔记
    沾沾自喜 花甜的工作笔记
    我高调的来啦。。。。 花甜的工作笔记
    今天偶听一词云终端 花甜的工作笔记
    我开始出轨了。 花甜的工作笔记
    软件限制策略。。。。。辛苦中。。 花甜的工作笔记
    推荐系统建构精选文章
  • 原文地址:https://www.cnblogs.com/hidamowang/p/10882443.html
Copyright © 2011-2022 走看看