zookeeper在ubuntu上的安裝配置及java操作

一、ubuntu上安裝,配置,操作zookeeper

1.準備安裝文件zookeeper-3.4.5.tar

2.上傳安裝文件到ubuntu,打開xshell,使用快捷鍵Ctrl+Alt+f打開文件上傳窗口,將文件拖拽到ubuntu指定目錄下

3.解壓tar -zxvf zookeeper-3.4.5.tar.gz

4.cd都zookeeper-3.4.5/conf目錄下,將zoo_sample.cfg複製一份,文件名爲zoo.cfg

5.打開vi,編輯zoo.cfg文件,添加,保存

單個zookeeper配置:只需在上圖加入紅框中的內容即可

集羣配置:要是多個虛擬機或者機器上都安裝了zookeeper,則每個zookeeper配置文件都加入相同的配置即可,

如下:server.1=ubuntu1.2888:3888

          server.2=ubuntu2.2888:3888

          server.3=ubuntu3.2888:3888

bogon和ubuntu1,ubuntu2,ubuntu3是你虛擬機上ubuntu的主機名,其餘固定配置,其中2888是zookeeper與其它機器上的zookeeper通信的端口,3888是zookeeper集羣選舉master的通信端口

6.啓動,關閉zookeeper

cd到zookeeper的安裝目錄下執行

1.bin/zkServer.sh start 啓動zookeeper

2.bin/zkServer.sh stop 停止zookeeper

3.bin/zkServer.sh status 查詢zookeeper的狀態,上圖中Mode代表是主是從

7.使用zookeeper客戶端

cd到zookeeper的安裝目錄下執行

1.bin/zkCli.sh

2.執行help命令,查看幫助

二、java代碼連接zookeeper,增刪改查

1.環境:在springboot的pom.xml添加zookeeper的maven依賴

2.zookeeper的增刪改查java代碼如下

package zookeeper;

import org.apache.zookeeper.*;
import org.apache.zookeeper.data.Stat;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.util.List;

/**
 * Created by Administrator on 2018/8/15.
 */
public class ZookeeperController {

    ZooKeeper zk = null;
    public static void main(String[] args) throws Exception {
        ZookeeperController zookeeperController = new ZookeeperController();
        ZooKeeper zk = zookeeperController.getZookeeper();
        //zookeeperController.creat(zk);
        zookeeperController.get(zk);
        //zookeeperController.remove(zk);
        zk.close();
    }

    //建立zookeeper連接
    public ZooKeeper getZookeeper() throws Exception {
            zk = new ZooKeeper("192.168.237.133:2181", 3000, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {
                System.out.println(watchedEvent.getType()+"-------------"+watchedEvent.getPath());
                //驗證zookeeper監聽 2.持續監聽
               /* try {
                    zk.getChildren("/",true);
                } catch (KeeperException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }*/
            }
        });
        return zk;
    }

    //創建節點
    public void creat(ZooKeeper zk) throws Exception {
        if(zk.exists("/zoo", false) == null)
        {
            zk.create("/zoo", "Zookeeper".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        }
    }

    //查詢子節點及子節點數據
    public void get(ZooKeeper zk) throws Exception {
        List<String> dataList = zk.getChildren("/",true);
        for (String data : dataList) {
            System.out.println("data:"+data);
        }
        //獲取節點數據
        System.out.println(".................."+new String(zk.getData("/zoo", false, null)));
        //驗證zookeeper監聽:1.使線程一直啓動
        //Thread.sleep(Long.MAX_VALUE);
    }

    //刪除子節點
    public void remove(ZooKeeper zk) throws Exception {
        //參數2指定要刪除的版本,-1表示刪除所有版本
        zk.delete("/test",-1);
    }

    //關閉zookeeper
    public void close(ZooKeeper zk) throws Exception {
        zk.close();
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章