MRS HBase结构介绍

HBase结构介绍

HBase结构介绍

  • HBase集群由主备Master进程和多个RegionServer进程组成。

    Master

    又叫HMaster,在HA模式下,包含主用Master和备用Master。其中:

    主用Master:负责HBase中RegionServer的管理,包括表的增删改查;RegionServer的负载均衡,Region分布调整;Region分裂以及分裂后的Region分配等。

    备用Master:当主用Master故障时,备用Master将取代主用Master对外提供服务。故障恢复后,原主用Master降为备用。

    Client

    Client使用HBase的RPC机制与Master、RegionServer进行通信。Client与Master进行管理类通信,与RegionServer进行数据操作类通信。

    RegionServer

    RegionServer负责提供表数据读写等服务,是HBase的数据处理和计算单元。RegionServer一般与HDFS集群的DataNode部署在一起,实现数据的存储功能。

    ZooKeeper集群

    ZooKeeper为HBase集群中各进程提供分布式协作服务。各RegionServer将自己的信息注册到ZooKeeper中,主用Master据此感知各个RegionServer的健康状态。

    HDFS集群

    HDFS为HBase提供高可靠的文件存储服务,HBase的数据全部存储在HDFS中。


MRS HBase原理介绍

HBase数据模型

HBase以表的形式存储数据。表中的数据划分为多个Region,并由Master分配给对应的RegionServer进行管理。

每个Region包含了表中一段RowKey区间范围内的数据,HBase的一张数据表开始只包含一个Region,随着表中数据的增多,当一个Region的大小达到容量上限后会分裂成两个Region。

RegionServer数据存储

RegionServer主要负责管理由HMaster分配的Region。

元数据表

元数据表是HBase中一种特殊的表,用来帮助Client定位到具体的Region。元数据表包括“hbase:meta”表,用来记录用户表的Region信息,例如,Region位置、起始RowKey及结束RowKey等信息。

数据操作流程

1、对HBase进行增、删、改、查数据操作时,HBase Client首先连接ZooKeeper获得“hbase:meta”表所在的RegionServer的信息。

2、HBase Client连接到包含对应的“hbase:meta”表的Region所在的RegionServer,并获得相应的用户表的Region所在的RegionServer位置信息。

3、HBase Client连接到对应的用户表Region所在的RegionServer,并将数据操作命令发送给该RegionServer,RegionServer接收并执行该命令从而完成本次数据操作。

为了提升数据操作的效率,HBase Client会在内存中缓存“hbase:meta”和用户表Region的信息,当应用程序发起下一次数据操作时,HBase Client会首先从内存中获取这些信息;当未在内存缓存中找到对应数据信息时,HBase Client会重复上述操作。

MRS HBase与其他组件的关系

HBase和HDFS的关系

HDFS是Apache的Hadoop项目的子项目,HBase利用Hadoop HDFS作为其文件存储系统。HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持。除了HBase产生的一些日志文件,HBase中的所有数据文件都可以存储在Hadoop HDFS文件系统上。

HBase和ZooKeeper的关系

1、HRegionServer以Ephemeral node的方式注册到ZooKeeper中。其中ZooKeeper存储HBase的如下信息:HBase元数据、HMaster地址。

2、HMaster通过ZooKeeper随时感知各个HRegionServer的健康状况,以便进行控制管理。

3、HBase也可以部署多个HMaster,类似HDFS NameNode,当HMaster主节点出现故障时,HMaster备用节点会通过ZooKeeper获取主HMaster存储的整个HBase集群状态信息。即通过ZooKeeper实现避免HBase单点故障问题。

MRS HBase开源增强特性

HBase开源增强特性:HIndex

HBase是一个Key-Value类型的分布式存储数据库。每张表的数据按照RowKey的字典顺序排序,因此,如果按照某个指定的RowKey去查询数据,或者指定某一个RowKey范围去扫描数据时,HBase可以快速定位到需要读取的数据位置,从而可以高效地获取到所需要的数据。

HBase开源增强特性:支持多点分割

当用户在HBase创建Region预先分割的表时,用户可能不知道数据的分布趋势,所以Region的分割可能不合适,所以当系统运行一段时间后,Region需要重新分割以获得更好的查询性能,HBase只会分割空的Region。

为了实现根据用户的需要动态分割Region以获得更好的性能这一目标,开发了多点分割又称动态分割,即把空的Region预先分割成多个Region。通过预先分割,避免了因为Region空间不足出现Region分割导致性能下降的现象。

HBase开源增强特性:容灾增强

主备集群之间的容灾能力可以增强HBase数据的高可用性,主集群提供数据服务,备用集群提供数据备份,当主集群出现故障时,备集群可以提供数据服务。相比开源Replication功能,做了如下增强:

1、备集群白名单功能,只接受指定集群ip的数据推送。

2、开源版本中replication是基于WAL同步,在备集群回放WAL实现数据备份的。对于BulkLoad,由于没有WAL产生,BulkLoad的数据不会replicate到备集群。通过将BulkLoad操作记录在WAL上,同步至备集群,备集群通过WAL读取BulkLoad操作记录,将对应的主集群的HFile加载到备集群,完成数据的备份。

3、开源版本中HBase对于系统表ACL做了过滤,ACL信息不会同步至备集群,通过新加一个过滤器org.apache.hadoop.hbase.replication.SystemTableWALEntryFilterAllowACL,允许ACL信息同步至备集群,用户可以通过配置hbase.replication.filter.sytemWALEntryFilter使用该过滤其实现ACL同步。

4、备集群只读限制,备集群只接受备集群节点内的super user对备集群的HBase进行修改操作,即备集群节点之外的HBase客户端只能对备集群的HBase进行读操作。

HBase开源增强特性:HBase MOB

在实际应用中,用户需要存储大大小小的数据,比如图像数据、文档。小于10MB的数据一般都可以存储在HBase上,对于小于100KB的数据,HBase的读写性能是优秀的。如果存放在HBase的数据大于100KB甚至到10MB时,插入同样个数的数据文件,其数据量很大,会导致频繁的compaction和split,占用很多CPU,磁盘IO频率很高,性能严重下降。

将MOB数据(即100KB到10MB大小的数据)直接以HFile的格式存储在文件系统上(例如HDFS文件系统),然后把这个文件的地址信息及大小信息作为value存储在普通HBase的store上,通过expiredMobFileCleaner和Sweeper工具集中管理这些文件。这样就可以大大降低HBase的compation和split频率,提升性能。

HBase开源增强特性:HBase双读

在HBase存储场景下,因为GC、网络抖动、磁盘坏道等原因,很难保证99.9%的查询稳定性。为了满足用户大数据量随机读低毛刺的要求,新增了HBase双读特性。

HBase双读特性是建立在主备集群容灾能力之上,两套集群同时产生毛刺的概率要远远小于一套集群,即采用双集群并发访问的方式,保证查询的稳定性。当用户发起查询请求时,同时查询两个集群的HBase服务,在等待一段时间(最大容忍的毛刺时间)后,如果主集群没有返回结果,则可以使用响应最快的集群数据。

MRS集群客户端使用教程视频

MapReduce服务 MRS

03:44

MapReduce服务 MRS

MapReduce服务 MRS

03:22

MapReduce服务 MRS

MapReduce服务 MRS

04:20

MapReduce服务 MRS

MapReduce服务 MRS

04:20