91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

大數據生態之zookeeper(API)

發布時間:2020-07-25 16:42:39 來源:網絡 閱讀:233 作者:原生zzy 欄目:大數據

在使用maven項目編寫zookeeper程序時導入相關的jar包:

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.10</version>
        </dependency>

1.創建集群連接

  //集群節點節點,之間使用逗號隔開
    static String url="hadoop01:2181,hadoop02:2181,hadoop03:2181";
    //集群編程入口
    static ZooKeeper zk;
    //超時時間
    static long time=5000;
    //使用靜態代碼塊,初始化ZooKeeper對象
    static {
        try {
            zk=new ZooKeeper(url,(int)time,null);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

2.創建節點

    public void createZnode(ZooKeeper zk){
        //必須使用絕對路徑
        String path="/test/test04";
        //在創建創建節點時,必須指定節點內容
        byte data[]="I am a good boy!".getBytes();
        try {
            /**
             * zk.create的四個參數表示:
             * arg1:節點路徑
             * arg2:節點存放的內容
             * arg3:權限設置:默認
             * arg4:節點類型(永久無順序、永久有順序、臨時無順序、臨時有順序)
             */
            String info = zk.create(path, data, ZooDefs.Ids.OPEN_ACL_UNSAFE
                    , CreateMode.EPHEMERAL);
            System.out.println(info==null?"fail":"success");
        } catch (KeeperException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

3.查看節點信息

    public void getInfo(ZooKeeper zk,String path){
        try {
            /**

             * zk.getData(path, null, null);
             *  參數1:節點的絕對路徑  string
             *  參數2:節點的監聽
             *  參數3:節點的狀態對象
             */
            byte[] data = zk.getData(path, null, null);
            System.out.println("節點:"+path+"的信息是:"+(new String(data)));
        } catch (KeeperException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

4.修改節點數據

 public void updateData(ZooKeeper zk,String path){
        try {
            /**
             * zk.setData(path, data, version);
             * path:修改內容的節點
             * data:更新的數據
             * version:修改的版本:如果不知道,寫-1,表示最新版本 
             */
            zk.setData(path,"haha".getBytes(),-1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

5.刪除節點

 public void deleteZnode(ZooKeeper zk,String path){
        try {
            /**
             * zk.delete(path, version);
             * path:路徑
             * version:刪除的版本,如果不知道,寫-1,表示刪除最新版本  int
             */
            zk.delete(path,-1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

6.獲取znode節點的權限信息

public void getACL(ZooKeeper zk,String path){
        try {
            /**
             * zk.getACL(path,stat)
             * path:路徑
             * stat:狀態信息
             */
            List<ACL> acls = zk.getACL(path, null);
            for(ACL acl:acls){
                System.out.println(acl.getPerms());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

7.獲取子節點

public void getChildren(ZooKeeper zk, String path) {
        try {
            //判斷節點是否存在
            if (zk.exists(path, null) == null) {
                List<String> childrens = zk.getChildren(path, null);
                for(String children:childrens){
                    //注意這里面收到的都是當前節點下的子節點的相對路徑
                    System.out.println(children);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

8.znode的測試監聽

public class testZKWatcher {
    static String url="hadoop01:2181,hadoop02:2181,hadoop03:2181";
    static ZooKeeper zk;
    static long time=5000;
    static {
        try {
            zk=new ZooKeeper(url,(int) time,null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //設置監聽
    public static void liisten(String path,ZooKeeper zk){
        try {
            zk.exists(path, new Watcher() {
                @Override
                //WatchedEvent event監聽事件對象
                public void process(WatchedEvent event) {
                    //節點觸發的類型(新增、修改、創建...)
                    Event.EventType type = event.getType();
                    //獲取觸發的節點的路徑
                    event.getPath();
                    System.out.println("觸發事件的路徑"+path+",觸發的事件的類型"+type);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String path="/test/test01";
        liisten(path,zk);
        try {
            //觸發監聽
            zk.create("jj","zzy".getBytes(),
                    ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

| 這里需要注意的是,監聽事件是一次性的,如果需要一直監聽,那么需要設置循環監聽。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凌源市| 永和县| 湄潭县| 金山区| 鹤峰县| 崇州市| 修文县| 定安县| 枣庄市| 封丘县| 霍州市| 且末县| 建水县| 永新县| 武清区| 老河口市| 霍州市| 郴州市| 天门市| 临清市| 大理市| 体育| 罗田县| 和静县| 彭水| 彩票| 攀枝花市| 平乡县| 蓝田县| 舟山市| 布拖县| 祁阳县| 印江| 习水县| 方山县| 阿拉善盟| 普洱| 松滋市| 库车县| 临湘市| 晋州市|