一、什么是Zookeeper
Zookeeper是一个hadoop的分布式协调服务,它包含一个简单的源语集。分布式应用程序可以基于它市县同步服务,配置维护和命名服务。Zookeeper本身就是一个分布式集群,提供少量数据的存储和管理。能够把数据在集群内部进行同步,在各个节点之间能够保持数据的一致性。提供了对数据节点的监听器,对数据节点的数据发生变化,则会记录。
二、Zookeeper中的角色
Zookeeper中的角色氛围Leader和Fllower,Leader实现数据的写操作,然后再通知其他的follower,只要超过集群中一半的节点更新成功,则认为写操作成功。Leader和Fllower 并不是指定的,而是通过选举机制投票产生。
1、领导者(leader),负责进行投票的发起和决议,更新系统状态
2、学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票
3、Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度
4、客户端(client),请求发起方
三、为什么使用Zookeeper?
1、大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)
2、目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制
3、协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器
4、ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用
四、Zookeeper能帮我们做什么?
1、Hadoop2.0,使用Zookeeper的事件处理确保整个集群只有一个活跃的NameNode,存储配置信息等.
2、HBase,使用Zookeeper的事件处理确保整个集群只有一个HMaster,察觉HRegionServer联机和宕机,存储访问控制列表等.
五、Zookeeper文件结构
Zookeeper管理客户所存储的数据采用类似于文件树的结构:
每个节点叫做一个node /order-anlalyze(info_data<1M)/aa(info_data<1M)
六、Zookeeper的节点
1、Znode有两种类型,短暂的(ephemeral)和持久的(persistent)
2、Znode的类型在创建时确定并且之后不能再修改
3、短暂znode的客户端会话结束时,zookeeper会将该短暂znode删除,短暂znode不可以有子节点
4、持久znode不依赖于客户端会话,只有当客户端明确要删除该持久znode时才会被删除
5、Znode有四种形式的目录节点,PERSISTENT、PERSISTENT_SEQUENTIAL、EPHEMERAL、EPHEMERAL_SEQUENTIAL