新生成hbase的一个表的时候,整个集群中就只有一个新表的region分区,随着存储的数据增多,一个region就会水平分割为大小相等的2个region,这一过程是由HRegion Server自动处理的,期间不需要HMaster Server的参与。
具体分割过程是这样的:
当memstore中的数据大于一定阀值后会被刷新到磁盘上,生成一个storefile文件,刷新操作完成后,触发一个minor compaction合并压缩操作,将属于该region的一些最早生成的storefile文件重写到一个大的storefile,然后删除被合并的文件。
当合并后的storefile文件的size大于配置的
hbase.hregion.max.filesize的值(该值也可以在定义表结构时设置大小,该值就是分割region分区的阀值)时,这个storefile所属的region分区就会自动被水平分割成对等的2个分区;这个split操作会很快被服务器完成:因为分区的时候系统只是简单地为新的分区创建了2个对父region的引用,每个引用只引用原region的一半数据。
HRegion server会在父分区创建2个split目录——每个新分区一个目录,然后原region会下线,也不会响应任何客户端的请求,这些请求路由到对应的新生成region分区并有新region响应。
接着HRegion Server会推过后台的多线程程序在split目录内为新分区创建一写必须的文件结构,包括为新region创建分区目录和对父region的引用文件。这些预备文件结构成功完成后,服务器会将这两个新的region目录移到table目录,同时修改.META.表的表信息,即原region被分割成了2个新的新的子region。从下图所示可以看一下region分割时.META.表是什么样子的:
从上图中我们可以看出,原region被分成了2个新的region,在rowkey = 550的地方平分,SPLIT => true表明region处于split状态,被splitA和splitB两个region引用。
新的region对原region的引用文件中只保存很少的信息:分割region的rowkey和分区对应的结束rowkey和开始的rowkwy,即starkey和endkey。查询新region上的数据时是通过hbase的HalfFileReader类来读取原region上的数据文件,代替原分区响应客户端的请求。
新分割的子region在触发compaction操作的时候,会在后台将原region中的数据文件合重写到新的region的storefile文件中,合并重写完成会自动用新生成的storefile替换原来的引用文件。当没有对已下线的原region的引用后,原分区的相关数据会被彻底删除,最后处于对负载均衡的考虑HMaster会在合适的一个时间点将split region移动到其他HRegion Server。

- 大小: 102.2 KB
分享到:
相关推荐
Hadoop之HBase从入门到精通 本文将详细介绍HBase技术,从基础概念到高级应用,旨在帮助读者快速掌握HBase技术。...本文仅为HBase技术的入门级介绍,读者可以继续深入学习HBase技术,掌握更多的高级应用。
本文将深入探讨HBase的性能测试细节,重点剖析数据插入性能,并通过实证分析揭示其背后的机制与优化策略。 #### 数据插入性能测试设计 在评估HBase的实时数据插入性能时,测试场景设计至关重要。以随机值的Rowkey...
当 Table 随着记录数不断增加而变大后,会逐渐分裂成多份 splits,成为 regions,一个 region 由[startkey,endkey)表示,不同的 region 会被 Master 分配给相应的 RegionServer 进行管理。 -ROOT- && .META. Table ...
### HBase参数优化详解 #### 一、引言 随着大数据技术的发展,HBase作为一种分布式、可扩展的大规模数据存储系统,在很多应用场景中扮演着重要角色。为了更好地利用HBase来提升系统的整体性能,对HBase进行参数...
### HBASE在淘宝的应用与优化 #### 一、HBase简介 HBase是一个分布式的、面向列的NoSQL数据库系统,其底层数据存储基于Hadoop的HDFS。它具有高可用性和高性能的特点,并且能够支持大规模的数据存储需求,即可以处理...
### HBase性能优化详解 #### 一、表的设计优化 HBase作为一种分布式列式存储系统,在设计表结构时,合理的规划对于提升系统的整体性能至关重要。本文将从几个方面详细介绍如何优化HBase表的设计。 ##### 1.1 预...
14. **Hbase 客户端**:Hbase 的客户端通过 Zookeeper 获得 Region 位置信息,而不是 Master。所以,客户端不依赖 Master,正确答案是 C. Zookeeper。 15. **分布式数据库**:适用于地理上分布的数据中心应用程序的...