架构组成
HBase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由一下类型节点组成:HMaster节点、HRegionServer节点、ZooKeeper集群,而在底层,它将数据存储于HDFS中,因而涉及到HDFS的NameNode、DataNode等,总体结构如下:
文章插图
【Hbase架构详解】
?
在物理上,HBase由master/slave类型体系结构中的三种服务器组成 。RegionServer为读取和写入提供数据 。访问数据时,Client直接与Region Server通信 。Region的分配,DDL(创建,删除表)操作由HMaster处理 。作为HDFS一部分的Zookeeper维护活动集群状态 。Hadoop DataNode存储Region Server正在管理的数据 。所有HBase数据都存储在HDFS文件中 。Region Server与HDFS数据节点并置,从而为Region Server提供的数据实现数据局部性 。除了Region在Split的时候,Hbase写入不是本地的,但是在Hbase在完成compaction之后 HBase数据是基于Local写入的 。NameNode维护构成文件的所有物理数据块的元数据信息 。
文章插图
山东掌趣网络科技
?
Regions
HBase表按RowKey范围水平划分为“Region” 。一个Region包含表中该Region的开始键和结束键之间的所有行 。将Region分配给群集中称为“Region Server”的节点,这些Region Server为读取和写入提供数据 。Region Server可以服务大约1,000个区域 。
文章插图
山东掌趣网络科技
?
HBase HMaster
区Region分配,DDL(创建,删除表)操作由HBase Master处理 。
HBase Master主要负责:
Coordinating the region servers
- Assigning regions on startup , re-assigning regions for recovery or load balancing
- Monitoring all RegionServer instances in the cluster (listens for notifications from zookeeper)
Admin functions
- Interface for creating, deleting, updating tables
文章插图
山东掌趣网络科技
?
ZooKeeper
ZooKeeper为HBase集群提供协调服务,它管理着HMaster和HRegionServer的状态(available/alive等),并且会在它们宕机时通知给HMaster,从而HMaster可以实现HMaster之间的failover,或对宕机的HRegionServer中的HRegion集合的修复(将它们分配给其他的HRegionServer) 。ZooKeeper集群本身使用一致性协议(PAXOS协议)保证每个节点状态的一致性 。
文章插图
?山东掌趣网络科技
?
总结Zookeeper用于协调分布式系统成员的共享状态信息 。Region Server和Active的HMaster通过与ZooKeeper的会话连接 。ZooKeeper通过心跳维护临时节点以进行活动会话 。
文章插图
山东掌趣网络科技
每个RegionServer都会创建一个临时节点 。HMaster监视这些节点以发现可用的Region Server,并且还监视这些节点的服务器故障 。HMasters试图创建一个临时节点 。Zookeeper确定第一个Master,并使用它来确保只有一个Master处于Active状态 。活动的HMaster将心跳发送到Zookeeper,非活动的HMaster侦听活动的HMaster故障的通知 。如果Region Server或Active的HMaster无法发送心跳,则会话过期,并删除相应的临时节点 。更新的侦听器将被通知已删除的节点 。Active的HMaster侦听Region Sever,并在发生故障时恢复Region Server 。非活动HMaster侦听活动的HMaster故障,如果Active的HMaster发生故障,则非活动的HMaster会变为活动状态 。
HBase首先读取或写入
有一个称为META表的特殊HBase目录表,该表保存集群中Region的位置 。ZooKeeper存储META表的位置信息 。
这是客户端第一次读取或写入HBase时发生的情况:
1、客户端从ZooKeeper获取托管META表的Region服务器 。
2、客户端将查询.META 。服务器以获取与要访问的行键相对应的区域服务器 。客户端将该信息与META表位置一起缓存 。
3、它将从相应的区域服务器获取行 。
为了将来读取,客户端使用缓存来检索META位置和先前读取的行键 。随着时间的流逝,它不需要查询META表,除非由于区域移动导致遗漏;然后它将重新查询并更新缓存 。
文章插图
?山东掌趣网络科技
?
META表
hbase:meta表存储了所有用户HRegion的位置信息,它的RowKey是:tableName,regionStartKey,regionId,replicaId等,它只有info列族,这个列族包含三个列,他们分别是:
推荐阅读
- 梦见自己在室外拉大便 梦见自己在室外大便有女人走过来周公解梦详解
- 带你深入了解高并发架构
- 网站架构模式
- 详解Linux Shell脚本编写技巧,附实例说明
- Java反射机制是开发第三方架构的基础
- 微信小程序架构原理
- “三”大方向,构筑5G下一站:中国移动张晓然详解R18标准演进
- 手机各项参数详解 我不允许有女孩子不会买手机
- Apache Beam 架构原理及应用实践
- 微服务架构如何实现网站服务垂直化拆分