关于HBase Region的一些基本概念

简介:

最近发现HBase官方文档里面关于region的内容写的很清晰,所以尝试把其中和region的基本概念有关的内容做了翻译和简单的补充。关于Region的split/compact等操作的相关内容网上已经很多了,所以这些方面本文不涉及,只对region的概念和状态图这两部分内容做了搬运。如果需要了解更多内容可以自行阅读原文。Region是HBase中管理数据的一个单位,日常的运维中有相当一部分和region有关,把region的一些基本概念搞清楚还是很有意义的。

Region的概念

Region是HBase中表数据分布和访问的基本单位。这句话有两层含义:
(1)从数据的逻辑概念来说,表按照rowkey范围划分为不同的region,region按照列族划分为不同的store,store中包含memstore和storefile。如下图:
Region_
(2)从数据的物理存储位置来说,region是数据分布的基本单位,表的数据会分布在多个RegionServer上面,而一个region的数据只会在一个RegionServer上面。一个RegionServer同时管理多个region。

Region状态图

在HBase2.0里面,Region的状态存储在hbase:meta表里面,hbase:meta本身的Region状态存储在zookeeper中。Region的状态图如下:
region_states
图中大部分状态应该都不需要翻译了,这里简单解释一下和merge/split有关的几个状态:
SPLITTING: 当一个region开始split时,RegionServer通知master该region处于此状态。
SPLIT: 表示这个Region已经完成了split操作。
SPLITTING_NEW: 表示这个Region是在当前正在进行中的split操作创建出的子Region。
MERGING: merge操作开始后(到结束之前),被Merge的Region处于此状态。
MERGED: 表示这个Region已经被合并了。
MERGING_NEW: 表示这个Region是当前正在进行中的merge操作创建出的。

图中状态迁移的过程描述如下:
1 master将region的状态由OFFLINE置为OPENING,并尝试将region分配到一个RegionServer上面。如果分配region的RPC请求失败(RegionServer没有收到),master会重试直到成功或超出最大重试次数。RegionServer收到分配请求后,开始打开region。

2 如果分配region的RPC请求超出最大重试次数,master会将region置为CLOSING状态并尝试关闭region。

3 RegionServer打开region后,会一直通知master直到master将region状态置为OPEN并通知RegionServer。

4如果RegionServer打开region失败,会通知master,master降region状态置为CLOSED并尝试在其他RegionServer打开region。

5 如果master在多个RegionServer上都无法打开region(hbase.assignment.maximum.attempts,默认为10),会将region的状态置为FAILED_OPEN。之后不会对这个region做任何操作。对于FAILED_OPEN的region,只能通过hbase shell人工干预或重启master才会再次打开。

6 master把region状态由OPEN置为CLOSING。master会向RegionServer发送关闭region的请求,如果RegionServer没有收到,master会重试,直到RPC成功或达到最大重试次数。

7 如果RegionServer不在线或抛出NotServingRegionException,master将region置为OFFLINE状态,并将region重新分配到其他RegionServer上面。

8 如果RegionServer在线但是master一直调用失败(超过最大重试次数),master会将region置为FAILED_CLOSE状态。之后不会对这个region做任何操作。对于FAILED_CLOSE的region,同样只能通过hbase shell人工干预或重启master才会改变其状态。

9 RegionServer收到关闭region的请求后,关闭region并通知master。master将region置为CLOSED状态并重新分配到其他RegionServer。

10 分配region前,master会先将处于CLOSED状态的region置为OFFLINE状态。

11 RegionServer在split region前通知master。master将region状态由OPEN置为SPLITTING并将两个新创建的region加入到RegionServer,这两个新的region初始状态为SPLITTING_NEW。

12 通知master后,RegionServer开始split region。split结束后,master将被切分的region状态由SPLITTING置为SPLIT,新切分出的两个region的状态由SPLITTING_NEW置为OPEN。

13 如果split失败,master将被切分的region状态由SPLITTING置为OPEN,新切分出的两个region的状态由SPLITTING_NEW置为OFFLINE。

14 RegionServer在开始合并两个region前,首先通知master,master将这两个region的状态由OPEN置为MERGING,并创建一个新的region,将其状态置为MERGING_NEW。

15 通知master后,RegionServer开始合并两个region。合并完成后,master将被合并的两个region的状态由MERGING置为MERGED,将新的region的状态由MERGING_NEW置为OPEN。

16 如果合并失败,master将被合并的两个region的状态由MERGING置为OPEN,新创建的region的状态由MERGING_NEW置为OFFLINE。

17 对处于FAILED_OPEN和FAILED_CLOSE状态的region,通过hbase shell重新分配,master会尝试再次关闭。

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5天前
|
存储 负载均衡 分布式数据库
bigdata-27-HBase架构与概念
bigdata-27-HBase架构与概念
60 1
|
10月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Cell
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。它是一个分布式数据库的NoSQL数据库,主要用于存储和处理海量数据。HBase的核心特性包括高可用性、高性能和高伸缩性。在阿里云开发者社区中,我们将介绍HBase的基本概念和架构,以及它的基本数据模型Cell。
565 0
|
10月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Row
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。
213 0
|
10月前
|
存储 分布式数据库 Hbase
分布式数据库HBase的基本概念和架构之概念面向列(簇)的分布式数据库
在分布式数据库 HBase 中,数据的存储和管理是基于列的分布式存储。
52 0
|
10月前
|
存储 分布式计算 监控
分布式数据库HBase的基本概念和架构之基本架构的Region Server
分布式数据库HBase是一个开源的分布式数据库系统,是Apache Hadoop生态系统的重要组成部分。
360 0
|
10月前
|
存储 分布式计算 监控
分布式数据库HBase的基本概念和架构之基本架构的Master
分布式数据库HBase是一个开源的分布式数据库系统,是Apache Hadoop生态系统的重要组成部分。
313 0
|
10月前
|
存储 分布式计算 监控
分布式数据库HBase的基本概念和架构之基本架构的ZooKeeper
分布式数据库HBase是一个开源的分布式数据库系统,是Apache Hadoop生态系统的重要组成部分。
393 0
|
10月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本架构的Client
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。它是一个分布式数据库的NoSQL数据库,主要用于存储和处理海量数据。HBase的核心特性包括高可用性、高性能和高伸缩性。在阿里云开发者社区中,我们将介绍HBase的基本概念和架构,以及它的基本架构Client。
457 1
|
10月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的TimeStamp
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。
368 0
|
10月前
|
存储 分布式计算 NoSQL
分布式数据库HBase的基本概念和架构之基本数据模型的Table
HBase是一个分布式数据库系统,基于Google的Bigtable和Apache Hadoop的HDFS构建而成。