Hadoop大数据开发基础系列:十一、Zookeeper

第十一章、Zookeeper

一、Zookeeper简介

1.什么是Zookeeper
Zookeeper是r是一个中心化的服务,一个开源的、 分布式的应用程序协调服务。它提供了一套原语集,通过这套原语集,可以实现更高层次的同步服务、配置管理、集群管理以及命名管理。
总的来说就是: Zookeeper保证了数据在集群中的事务一致性。
Zookeeper通常有奇数个节点(这与选取leader的机制有关)。
 
2.Zookeeper原理

 

二、Zookeeper架构

 
1.Leader
领导者负责投票的发起和决议,更新系统状态
 
2.Learner
(1)Follower:
用于接收客户请求并向客户端返回结果,在选主过程中参与投票。
(2)Observer:
可以接收客户端连接,将写请求转发给leader节点。但是Observer不参加投票过程,只同步leader的状态。
Observer的目的是为了扩展系统,提高读取速度。
 
3.Client
发出请求。
 

三、Zookeeper数据模型

数据模型中的数据单元,被称为数据节点:Znode,这个Znode是被它所在路径唯一标识。
对Zookeeper数据模型的说明:
 
1.数据节点可以有子节点,也可以有数据节点分为临时节点和永久节点,临时节点在客户端会话断开后消失,而且 临时节点下不能存在子节点。永久节点就相当于进行了持久化,只能人为的去删除;临时节点也可以人为的删除,但是 在session失效后,临时节点的所有数据都会丢失。
 
2.Zookeeper的核心特性:Znode是可以被监控的,包括这个目录节点中存储的数据的修改,子节点目录变化等。一旦变化可以通知设置监控的客户端。 (Zookeeper的很多功能都是基于这个特性实现的)
3.Znode是有版本的,每个Znode中存储的数据可以由多个版本,即一个访问路径中可以由多份数据。
4.ZK保持同级节点的唯一性,也就是说一个节点下面不能有两个完全一样的节点;Znode的目录名可以自动编号,如p_1已经存在,如果再创建的话,将会自动命名为p_2。
5.Znode必须有父子关系,必须存在先后。
 

四、Zookeeper应用

1.数据发布和订阅
将数据发布到Zookeeper节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。
 
2.统一命名服务
可以实现在分布式系统上设置全局唯一ID,Zookeeper可以保证原子性,不会因多个系统的争抢造成不一致。
 
3.分布通知/协调
Zookeeper中特有的watcher注册与异步通知机制,能够很好地实现分布式环境下不同系统之间的通知与协调,实现对数据变化的实时处理。
(1)使用方法通常是 不同系统都对Zookeeper上的同一个Znode注册监听znode的变化(包括子节点),其中一个系统update了Znode,那么另一个系统能够收到通知,并作出相应处理。
(2)另一种方式就是使用 心跳检测机制,利用Zookeeper上的某个节点关联,大大减少了系统耦合。(HBase、HDFS、YARN)
(3)另一种 工作汇报模式:一些类似于任务分发系统,子任务启动后,到ZK来注册一个临时节点,并且定 时将自己的进度进行汇报(将进度写回这个临时节点),这样任务管理者就能够实时知道任务进度。总之,使用zookeeper来进行分布式通知和协调能够大大降低系统之间的耦合。
(4)还有一种模式是 系统调度模式
 
4.分布式锁
主要是因为Zookeeper为我们保证了数据的强一致性,即每时每刻,Zookeeper上的任意节点上的相同Znode的数据是一定相同的。 锁服务可以分为两类,一个是保持独占,另一个是控制时序。
(1).保持独占
就是所有试图来获取这个锁的客户端,最终只有一个可以成功获得这把锁。
具体内容就是所有客户端都去创建/distribute_lock 节点,最终成功创建的客户端就拥有了这把锁。
(2).控制时序
就是所有试图来获取这个锁的客户端,最终都是会被安排执行,只是有个全局时序了。
做法和上面基本类似,只是这里 /distribute_lock 已经预先存在,客户端在它下面创建临时有序节点。Zk的父节点(/distribute_lock)维持一份sequence,保证子节点创建的时序性,从而也形成了每个客户端的全局时序。
 
5.集群管理
(1)集群机器监控
(2)Master选举
Master选举则是zookeeper中最为经典的使用场景
 
6.HBase RegionServer感知
如果一个RegionServer宕掉,RegionServer在Zookeeper上的子目录就会自动删除。
当HMaster监听到有一个Zookeeper子目录删除,它就知道有一个RegionServer宕机了。
 
7.提供HBase:meta元数据的访问地址
存储HBase集群的hbase:meta元数据表所在的RS访问地址。客户端读写数据首先会从 此节点读取hbase:meta元数据的访问地址,将部分元数据加载到本地,进而进行数据路由。
 

五、Zookeeper Shell命令

一些常见的Zookeeper shell命令
发布了18 篇原创文章 · 获赞 0 · 访问量 502

第十一章、Zookeeper

猜你喜欢

转载自blog.csdn.net/weixin_45678149/article/details/104943576