HBase体系架构、组件及执行原理

大数据技术 潘老师 3年前 (2021-04-26) 1481 ℃ (0) 扫码查看

本节内容主要介绍HBase体系架构中的各个组件,来看下每个组件的作用及组件之间是如何相互协作的,另外还介绍HBase的执行原理。

HBase体系架构及组件

首先我们来看下HBase的体系架构图:
HBase体系架构、组件及执行原理

组件:

1、元数据存储ZooKeeper

首先来看一下ZooKeeper组件,该组件主要用于存储HBase的schemaTable元数据,它保障在任何时候,集群中只有一个Master,同时,ZooKeeper 用来存贮所有Region的寻址入口,进行实时监控RegionServer的上线和下线信息,并且实时通知HMaster

2、资源分配HMaster

HMaster组件类似HDFS中的NameNode,它不存储数据,主要作用是为RegionServer分配Region,同时负责RegionServer的负载均衡,如果发现失效的RegionServer,它会重新分配上面的Region, HMaster 组件还会管理用户对Table的增、删、改操作。

RegionServer 其实是Hbase的服务,部署在一台物理服务器上,region有一点像关系型数据的分区,数据存放在region中,当然region下面还有很多结构,确切来说数据存放在memstore和hfile中。我们访问hbase的时候,先去hbase 系统表查找定位这条记录属于哪个region,然后定位到这个region属于哪个服务器,然后就到哪个服务器里面查找对应region中的数据:

1)Region是HBase数据存储和管理的基本单位。
2)一个表中可以包含一个或多个Region。
3)每个Region只能被一个RS(RegionServer)提供服务,RS可以同时服务多个Region,来自不同RS上的Region组合成表格的整体逻辑视图。

3、 Region的处理HRegionServer

HMaster组件类似HDFS中的NameNode,而HRegionServer组件则类似HDFS中的DataNode。HRegionServer 组件负责维护Region, 处理对Region 的I/O 请求,同时,HRegionServer会负责切分在运行过程中变得过大的Region。

4、保持访问性能Client

Client组件主要包含访问HBase的接口,同时维护Cache来加快对HBase的访问性能。

5、分布式存储和负载均衡最小单元Region

在前面介绍组件时,已经说到Region了。Region 是HBase中分布式存储和负载均衡
的最小单元,HBase 会自动把表水平划分成多个区域,也就是多个Region。 每个Region会保存一个表里面某段连续的数据,每个表一开始只有 一个 Region,随着数据不断插入,Region会不断增大,当增大到一个阀值的时候,Region 就会等分成两个新的Region, 这个等分的过程又称之为裂变

当表中的行不断增多时,就会有越来越多的Region。这样张完整的表被保存在多个RegionServer 上。

6、MemStore与StoreFile组件

一个区域, 也就是一个 Region往往由多个Store组成,一个Slore包括位于内存中的MemStore和位于磁盘的StoreFile。

HBase 执行原理

前面介绍了HBese的体系架构, 接着结合下图来看一下HBase的执行原理,
HBase体系架构、组件及执行原理
从上图中可以看出,左边的Table包含多个Region,每个Region中又有多个Store,同时,每个Store又由一个MemStore和0至多个StoreFile组成。

为了更好地理解HBase执行原理,结合HBase体系架构图,可以看出StoreFile以HFile格式保存在HDFS上。

在执行写入操作时,会先将数据写入MemStore中,当MemStore中的数据达到某个阈值时,HRegionServer 会启动Flash Cache进程写入StoreFile,每次写入会形成单独的一个StoreFile。当StoreFile文件的数量增长到一定阈值后,系统会进行合并,在合并过程中会进行版本合并和删除工作,形成更大的StoreFile。

当一个Region中所有的SoreFile大小之和超过一定阈值后,会把当前的Region分割为两个,并由HMaster分配到相应的RegionServer服务器上,实现负载均衡。

在检索数据时,会先从MemSore中进行查找,如果从MemStore中找不到数据,会再从StoreFile上查找。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/bigdata/3090.html
喜欢 (7)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】