HBase Region重点剖析

Region是HBase数据管理的基本单位。数据的move,数据的balance,数据的split,都是按照region来进行操作的。

region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。

一个表中可以包含一个或多个Region。

每个Region只能被一个RS(RegionServer)提供服务,RS可以同时服务多个Region,来自不同RS上的Region组合成表格的整体逻辑视图。

regionServer其实是hbase的服务,部署在一台物理服务器上,region有一点像

关系型数据的分区,数据存放在region中,当然region下面还有很多结构,确切来

说数据存放在memstore和hfile中。我们访问hbase的时候,先去hbase系统表查找

定位这条记录属于哪个region,然后定位到这个region属于哪个服务器,然后就到

哪个服务器里面查找对应region中的数据

每个region有三个主要要素:

它所属于哪张表

它所包含的的第一行(第一个region没有首行)

它所包含的最后一行(末一个region没有末行)

当表初写数据时,此时表只有一个region ,当随着数据的增多,region开始变大,等到它达到限定的阀值大小时,变化把region分裂为两个大小基本相同的region,

而这个阀值就是storefile的设定大小(参数:hbase.hregion.max.filesize新版本默认10G) ,在第一次分裂region之前,所有加载的数据都放在原始区域的那台服务器上,随着表的变大

region的个数也会相应的增加,而region是Hbase集群分布数据的最小单位。

(但region也是由block组成,具体这个block和hdfs block什么样的关系后面再说,region是属于单一的regionserver,除非这个regionserver宕机,或者其它方式挂掉,再或者执行balance时,才可能会将这部分region的信息转移到其它机器上。)

*这也就是 为什么region比较少的时候,导致region分配不均,总是分派到少数的节点上,读写并发效果不显著,这就是hbase读写效率比较低的原因。

Region的结构

 

HBase Region重点剖析

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfxs.html