Zookeeper - 什麼是Zookeeper,以及zookeeper的安裝(1)
Zookeeper
什麼是Zookeeper?
ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。
從設計模式來說基於觀察者模式設計的分散式服務管理框架,儲存大家都關心的資料,然後接受觀察者的註冊。一旦這些資料狀態發生變化,zookeeper就將負責通知已經註冊的觀察者做出反應.
Zookeeper的安裝
Zookeeper的安裝很簡單,只需要下載壓縮包,然後解壓。
解壓後的目錄:
有幾個重要檔案目錄要注意,bin裡面存放著zookeeper命令操作檔案,conf就是配置了。
1 # The number of milliseconds of each tick 2 tickTime=2000 心跳時間 3 # The number of ticks that the initial 4 # synchronization phase can take 5 initLimit=10 初始連線時間,超過這個時間連線失敗 10 * tickTime 6 # The number of ticks that can pass between7 # sending a request and getting an acknowledgement 8 syncLimit=5 資料同步時間 5 * tickTime 9 # the directory where the snapshot is stored. 10 # do not use /tmp for storage, /tmp here is just 11 # example sakes. 12 dataDir=/tmp/zookeeper 資料存放目錄,開發的時候一般會改 13 # the port at which the clients will connect 14 clientPort=2181 初始預設埠15 # the maximum number of client connections. 16 # increase this if you need to handle more clients 17 #maxClientCnxns=60 18 # 19 # Be sure to read the maintenance section of the 20 # administrator guide before turning on autopurge. 21 # 22 # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance 23 # 24 # The number of snapshots to retain in dataDir 25 #autopurge.snapRetainCount=3 26 # Purge task interval in hours 27 # Set to "0" to disable auto purge feature 28 #autopurge.purgeInterval=1 29 ~ 30 ~
修改conf檔案下的zoo_simple.cfg 改成zoo.cfg
- 然後進入到zookeeper/bin/下
windows使用zkServer.cmd啟動服務zkCli.cmd啟動客戶端,
linux是使用./zkService.sh start啟動服務./zkCli.sh start啟動服務
也可以用四字命令檢視
echo ruok | nc localhost 2181
出現imok就代表啟動了
這樣我們就已經安裝好了zookeeper了
zookeeper資料結構
zookeeper的資料結構很像檔案系統,但是在zookeeper中並沒有目錄這樣的概念。在zookeeper中每一個結構成為znode(zookeeper node).
/app1等就是路徑PATH
在每個Znode節點中還可以儲存少量的資料,官網的解釋是(ZooKeeper旨在儲存協調資料:狀態資訊,配置,位置資訊等,因此儲存在每個節點的資料通常很小,在位元組到千位元組範圍內。)
通過
create /amber hahaha
可以建立一個PATH為/amber value為hahaha的Znode節點
get /amber
通過get /amber 我們可以在第一行看到znode的value “hahaha”
橙色部分統稱為Stat結構體,描述當前znode的資訊
hahaha //znode的value值 cZxid = 0x1d //建立znode的事務id ctime = Mon Dec 03 23:19:30 CST 2018 //建立時間 mZxid = 0x1d //修改znode的事務id mtime = Mon Dec 03 23:19:30 CST 2018 //修改時間 pZxid = 0x1d cversion = 0 dataVersion = 0 aclVersion = 0 ephemeralOwner = 0x0 dataLength = 6 //value的length numChildren = 0 //子節點的個數
除此之外可以通過help檢視zookeeper的操作命令