真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

大數(shù)據(jù)生態(tài)之zookeeper(API)

在使用maven項(xiàng)目編寫zookeeper程序時(shí)導(dǎo)入相關(guān)的jar包:

10年的山陽網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整山陽建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“山陽網(wǎng)站設(shè)計(jì)”,“山陽網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

        
            org.apache.zookeeper
            zookeeper
            3.4.10
        

1.創(chuàng)建集群連接

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

2.創(chuàng)建節(jié)點(diǎn)

    public void createZnode(ZooKeeper zk){
        //必須使用絕對路徑
        String path="/test/test04";
        //在創(chuàng)建創(chuàng)建節(jié)點(diǎn)時(shí),必須指定節(jié)點(diǎn)內(nèi)容
        byte data[]="I am a good boy!".getBytes();
        try {
            /**
             * zk.create的四個(gè)參數(shù)表示:
             * arg1:節(jié)點(diǎn)路徑
             * arg2:節(jié)點(diǎn)存放的內(nèi)容
             * arg3:權(quán)限設(shè)置:默認(rèn)
             * arg4:節(jié)點(diǎn)類型(永久無順序、永久有順序、臨時(shí)無順序、臨時(shí)有順序)
             */
            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.查看節(jié)點(diǎn)信息

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

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

4.修改節(jié)點(diǎn)數(shù)據(jù)

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

5.刪除節(jié)點(diǎn)

 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節(jié)點(diǎn)的權(quán)限信息

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

7.獲取子節(jié)點(diǎn)

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

8.znode的測試監(jiān)聽

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();
        }
    }
    //設(shè)置監(jiān)聽
    public static void liisten(String path,ZooKeeper zk){
        try {
            zk.exists(path, new Watcher() {
                @Override
                //WatchedEvent event監(jiān)聽事件對象
                public void process(WatchedEvent event) {
                    //節(jié)點(diǎn)觸發(fā)的類型(新增、修改、創(chuàng)建...)
                    Event.EventType type = event.getType();
                    //獲取觸發(fā)的節(jié)點(diǎn)的路徑
                    event.getPath();
                    System.out.println("觸發(fā)事件的路徑"+path+",觸發(fā)的事件的類型"+type);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

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

| 這里需要注意的是,監(jiān)聽事件是一次性的,如果需要一直監(jiān)聽,那么需要設(shè)置循環(huán)監(jiān)聽。


網(wǎng)站標(biāo)題:大數(shù)據(jù)生態(tài)之zookeeper(API)
分享地址:http://weahome.cn/article/gsdedh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部