Zookeeper的介紹和搭建

Zookeeper 簡介

Zookeeper是一個高效的分佈式協調服務,可以提供配置信息管理、命名、分佈式同步、集羣管理、數據庫切換等服務。它不適合用來存儲大量信息,可以用來存儲一些配置、發佈與訂閱等少量信息。Hadoop、Storm、消息中間件、RPC服務框架、分佈式數據庫同步系統,這些都是Zookeeper的應用場景。
Zookeeper集羣中節點個數一般爲奇數個(>=3),若集羣中Master掛掉,剩餘節點個數在半數以上時,就可以推舉新的主節點,繼續對外提供服務。
在這裏插入圖片描述

Zookeeper集羣搭建

  • 下載zookeeper對應的tar包,上傳
    在這裏插入圖片描述
  • 將解壓後的文件名zookeeper-3.4.10修改爲zookeeper。tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/
  • 在三個zookeeper節點配置環境變量
    • vim /etc/profile
    • 添加export ZOOKEEPER_HOME=/usr/local/zookeeper
    • 在path中添加$ZOOKEEPER_HOME/bin
      在這裏插入圖片描述
    • 執行source /etc/profile 使環境變量立即生效
  • 修改zookeeper中conf目錄下的zoo_sample.cfg爲zoo.cfg
  • 在這裏插入圖片描述
    修改三個zookeeper節點中的zoo.cfg文件,修改dataDir
  • 在zookeeper目錄下,創建data目錄。在3個zookeeper節點中data目錄下分別創建myid文件,並分別添加內容0、1、2
  • 啓動zookeeper
    -在這裏插入圖片描述

ZK常見命令

命令 含義
ls / 查找根目錄
create /test abc 創建節點並賦值
get /test 獲取指定節點的值
set /test cb 設置已存在節點的值
rmr /test 遞歸刪除節點
delete /test/test01 刪除不存在子節點的節點

ZK 的java連接API

/**
 * 
 */
package zookeeper;

import java.util.List;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;


public class zk {

	public static void main(String[] args) throws Exception {
		String connectionString = "master:2181,node1:2181,node2:2181";
		int sessionTimeout = 30000;
		ZooKeeper zk = new ZooKeeper(connectionString,sessionTimeout,null);
		
		zk.create("/testRoot","testRoot".getBytes(), 
		ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
		
		zk.create("/testRoot/child1","child1_data".getBytes(), 
	    ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
		
		List<String>children=zk.getChildren("/testRoot",new Watcher() {
			public void process(WatchedEvent event) {
				System.out.println("this is children node event");
	            System.out.println(event);
			}
		});
		
		System.out.println(children);
		
		zk.delete("/testRoot", -1);
		zk.delete("/testRoot/child1", -1);
		zk.close();
		
	}
}

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