Zookeeper的數據模型
? 層次化的目錄結構,命名符合常規文件系統規范(Linux)? 每個節點在zookeeper中叫做znode,并且其有一個唯一的路徑標識
? 節點Znode可以包含數據和子節點(即子目錄),但是EPHEMERAL類型的節點不能有子節點
? Znode中的數據可以有多個版本,比如某一個路徑下存有多個數據版本,那么查詢這個路徑下的數據就需要帶上版本
? 客戶端應用可以在節點上設置監視器 watcher
? 節點不支持部分讀寫,而是一次性完整讀寫
zkCli.sh
zk命令行中:
ls
create path data ? ?如create /welcome hello,world
get path ? ? 如get /welcome
set path data ? ?如set /welcome hi
如何將主機配置爲observer?
配置文件zoo.cfg中
server.1=hdp1:2888:3888:observer
zookeeper的節點
? Znode有兩種類型,短暫的(ephemeral)和持久的(persistent)
? Znode的類型在創建時確定并且之后不能再修改
? 短暫znode的客戶端會話結束時,zookeeper會將該短暫znode刪除,短暫znode不可以有子節點
? 持久znode不依賴于客戶端會話,只有當客戶端明確要刪除該持久znode時才會被刪除
? Znode有四種形式的目錄節點
-- PERSISTENT
-- EPHEMERAL
-- PERSISTENT_SEQUENTIAL
-- EPHEMERAL_SEQUENTIAL
hadoop是ephemeral的。
org.apache.zookeeper.ZooKeeper類主要方法列表
觀察者(watcher)
? Watcher 在 ZooKeeper 是一個核心功能,Watcher 可以監控目錄節點的數據變化以及子目錄的變化,一旦這些狀態發生變化,服務器就會通知所有設置在這個目錄節點上的 Watcher,從而每個客戶端都很快知道它所關注的目錄節點的狀態發生變化,而做出相應的反應
? 可以設置觀察的操作:exists,getChildren,getData
? 可以觸發觀察的操作:create,delete,setData
小結
? Zookeeper 作為 Hadoop 項目中的一個子項目,是Hadoop 集群管理的一個必不可少的模塊,它主要用來控制集群中的數據,如它管理 Hadoop 集群中的NameNode,還有 Hbase 中 Master Election、Server 之間狀態同步等。
? Zoopkeeper 提供了一套很好的分布式集群管理的機制,就是它這種基于層次型的目錄樹的數據結構,并對樹中的節點進行有效管理,從而可以設計出多種多樣的分布式的數據管理模型