zookeeper学习笔记
一,什么是zookeeper?
zookeeper 是 Hadoop 的分布式协调服务框架。
它有什么作用呢?它的作用主要是用来维护和监控你存储的数据的状态变化.通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。
一般可分为下面三个作用场景。
作用1 、统一命名服务
作用2 、配置管理
作用 3、集群管理
二,zookeeper的工作原理
1.每个Server在内存中存储了一份数据;
2.Zookeeper启动时,将从实例中选举一个leader(Paxos协议)
3.Leader负责处理数据更新等操作
4.一个更新操作成功,当且仅当大多数Server在内存中成功修改数据。
三, zookeeper的角色
1.领导者(leader),负责进行投票的发起和决议,更新系统状态。
2.学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接收客户端请求并向客户端返回结果,在选领导者过程中参与投票;observer 可以接收客户端的连接,将请求转发给leader,但在选领导者不参与投票,只同步leader的状态,observer的目的是为了扩展系统,提高读取的速度。
3客户端(client),请求的发起者。
四,每个server在工作是都有三个工作状态:
1,LOOKING:当前server不知道leader是谁,正在搜寻。
2,LEADING:当前server即为选举出来的leader。
3,FOLLOWING:leader已经选举出来,当前server与之同步。
五,zookeeper的集群数目为3,5,7个
1,leader选举算法采用了Paxos协议
2,Paxos核心思想:当多数server写数据成功,则任务数据写成功。
3,奇数能力偶数相同:3台服务器,挂一个可以正常运行;同样的4台,最多页只能挂一个。为了节省服务器的资源,采用奇数个。
六,zookeeper的数据模型(树形结构,类似与文件系统结构)
1,层次化的目录结构,命名符合常规文件系统规范
2,每个节点在zookeeper中叫做znode,并且有一个唯一的路径标识,类似与文件的path路径。
3,节点znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点。
4,znode中的数据可以有多个版本,那么查询这个路径下的数据就就需要带上版本
5,客户端应用可以在节点上设置监视器。
6,节点不支持部分读写,而是一次性完整毒读写。
七,zookeeper的节点(znode)
1,znode有四种形式的目录节点
PERSISTENT(持久的)
EPHEMERAL(短暂的)
PERSISTENT_SEQUENTIAL(持久化顺序编号目录节点)
EPHEMERAL_SEQUENTIAL(暂时化顺序编号目录节点)
2,znode的类型在创建是确定不能再修改。
3, 短暂的znode在客户端会话结束时被zookeeper删除,短暂的znode不可以有子节点。
4,持久的znode不依赖与客户端会话,只有客户端明确要删除该持久znode时才会被删除。