hbase region split and merge details

本文详细介绍了HBase中的Region概念,包括Region的组成部分、大小考量因素以及Region的自动分区策略。重点讨论了Region的分裂详细过程,包括分裂策略、触发条件、切分点的选择以及异常处理。同时,提到了Region合并的意义和步骤,以及Store File的合并(Compaction)机制,旨在深入理解HBase的分布式存储和性能优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Region 概念

Region是表获取和分布的基本元素,由每个列族的一个Store组成。对象层级图如下:

Table (HBase table) Region (Regions for the table) Store (Store per ColumnFamily for each Region for the table) MemStore (MemStore for each Store for each Region for the table) StoreFile (StoreFiles for each Store for each Region for the table) Block (Blocks within a StoreFile within a Store for each Region for the table)

Region 大小

Region的大小是一个棘手的问题,需要考量如下几个因素。

  • Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上,但并不是存储的最小单元。
  • Region由一个或者多个Store组成,每个store保存一个columns family,每个Strore又由一个memStore和0至多个StoreFile 组成。memStore存储在内存中, StoreFile存储在HDFS上。
  • HBase通过将region切分在许多机器上实现分布式。
  • region数目太多就会造成性能下降,对于同样大小的数据,700个region比3000个要好。
  • region数目太少就会妨碍可扩展性,降低并行能力。有的时候导致压力不够分散。
  • RegionServer中1个region和10个region索引需要的内存量没有太多的差别。

 

最好是使用默认的配置,可以把热的表配小一点(或者受到split热点的region把压力分散到集群中)。如果你的cell的大小比较大(100KB或更大),就可以把region的大小调到1GB。region的最大大小在hbase配置文件中定义:

<property> <name>hbase.hregion.max.filesize</name> <value>20 * 1024 * 1024 * 1024</value> </property>

说明:

当region中的StoreFile大小超过了上面配置的值的时候,该region就会被拆分,具体的拆分策略见下文。

上面的值也可以针对每个表单独设置,例如在hbase shell中设置:

create 't','f' disable 't' alter 't', METHOD => 'table_att', MAX_FILESIZE => '134217728' enable 't'

 

二、自动分区

一张表初始时只有一个region,用户开始向表中插入数据时,系统检查这个region的大小,确保其不超过配置的最大值,如果超过了限制,系统会在中间键(region 中间的那个行键)处将这个region拆分成两个大致相等的子region

 

三、分裂详细过程

Region自动切分是HBase能够拥有良好扩张性的最重要因素之一。HBase系统中Region自动切分是如何实现的?这里面涉及很多知识点,

比如:

(1)Region切分的触发条件是什么?

(2)Region切分的切分点在哪里?

(3)如何做好切分过程中的异常处理?

(4)切分过程中要不要将数据移动?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值