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 提供了一套很好的分布式集群管理的机制,就是它这种基于层次型的目录树的数据结构,并对树中的节点进行有效管理,从而可以设计出多种多样的分布式的数据管理模型