Zookeeper和Hadoop:
1:hadoop是 一旦namenode一挂掉,整个集群就完了。
2:zk 的健壮性是hadoop不能比拟的。相对于hadoop的 单点模式,,zookeeper集群,当server的leader失效时或者失去太多的
follower,zk集群进入恢复模式,恢复模式会自动选举出一个新的leader,让所有的server都恢复到一个正确的状态。
流程图:
client 发起请求,先到leader,然后再由leader分发到个个follower
具体:write request ---》request processor(请求处理器)处理请求----》atomic broadcast(Zookeeper的核心是原子广播,这个
机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。)----》replicate Database(内存数据库)
把这个请求发给每一台服务器节点,内部有一个轻量级的数据库。
ZK的数据体系模型
类似于文件系统的目录树型结构,同HDFS:
ZK 本身而已 不是存数据的。 hdfs的节点,只是一个路径,路径下面存数据。。而zookeeper还携带数据
zookeeper名字空间由节点znode构成,其组织方式类似文件系统,其中各个节点 相对于目录和文件,通过路径作为唯一标识。于文
件系统不同的是,每个节点具有与之对应的数据内容,同时也可以具有子节点。
(临时节点不能有子节点)
zookeeper用于存储协调数据,如状态、配置、位置等信息,每个节点存储的数据量很小,KB级别。
节点维护一个状态state结构(包括数据变化的版本号、ACL【访问控制权限】变化、时间戳),以允许缓存验证与协调跟新,每当节点
数据内容改变,多一个版本号(它不会把数据给删掉,类似hbse)。
客户端获取数据的同时也会获取数据的版本号。节点的数据以原子方式读写。
节点具有一个访问权限列表(access control list)来约束访问操作,即具有权限控制。