A4680bf71159407c85176d042133318c
一文讲清HBase的存储结构

前言

Hbase 是一个分布式的、多版本、面向列的开源 KV 数据库。运行在 HDFS 的基础上,支持 PB 级别、百万列的数据存储。

HBase的存储结构

逻辑存储结构

通过下图直观地展示 HBase 的逻辑存储结构:

HBase 逻辑视图

HBase 逻辑视图

在本图中,列簇(Column Family)对应的值就是 infoarea ,列( Column 或者称为 Qualifier )对应的就是 nameagecountrycityRow key 对应的就是 Row 1Row 2Cell 对应的就是具体的值。

  • Row key :表的主键,按照字典序排序。
  • 列簇:在 HBase 中,列簇将表进行横向切割。
  • 列:属于某一个列簇,在 HBase 中可以进行动态的添加。
  • Cell : 是指具体的 Value
  • Version :在这张图里面没有显示出来,这个是指版本号,用时间戳(TimeStamp )来表示。

看完这张图,是不是有点疑惑,怎么获取其中的一条数据呢?既然 HBaseKV 的数据库,那么当然是以获取 KEY 的形式来获取到 Value 啦。在 HBase 中的 KEY 组成是这样的:

Key 和 Value 图

Key 和 Value 图

KEY 的组成是以 Row keyCF(Column Family)ColumnTimeStamp 组成的。

TimeStampHBase 中充当的作用就是版本号,因为在 HBase 中有着数据多版本的特性,所以同一个 KEY 可以有多个版本的 Value 值(可以通过配置来设置多少个版本)。查询的话是默认取回最新版本的那条数据,但是也可以进行查询多个版本号的数据,在接下来的进阶操作文章中会有演示。

Region Server 和 Region 的关系

Region Server 和 Region 关系图

Region Server 和 Region 关系图

  • 一个 Region Server 就是一个机器节点(服务器)
  • 一个 Region Server 包含着多个 Region
  • 一个 Region 包含着多个列簇 (CF)
  • 一个 Region Server 中可以有多张 Table,一张 Table 可以有多个 Region

物理存储结构

先来看这张图:

Hbase架构图

Hbase架构图

为了不混淆,我们可以先把以下的概念一一对应起来

逻辑结构 物理结构
Region Server HRegion Server
top Created with Sketch.