首页>>新闻资讯>>行业新闻

HBase的存储结构这个算讲得清楚吗
   来源:    添加日期:2019-01-11    

Hbase 是一个分布式的、多版本、面向列的开源 KV 数据库。运行在 HDFS 的基础上,支持 PB 级别、百万列的数据存储。作为性能如此强大的KV数据库,HBase的存储结构究竟是怎样的呢?面向列的存储结构究竟有什么样的不同之处呢?接下来会详细讲解这部分。

物理存储结构

HBase的存储结构这个算讲得清楚吗

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

HBase的存储结构这个算讲得清楚吗

物理结构中

HRegion Server 就是一个机器节点,包含多个 HRegion ,但是这些 HRegion 不一定是来自于同一个 Table ,负责响应的是用户的 IO 请求,和 HDFS 进行交互,是服务器中的一个进程。

HRegion 包含多个 HStore 。

一个 CF 组成一个 HStore ,默认是 10 G,如果大于 10G 会进行分裂。HStore 是 HBase 的核心存储单元,一个 HStore 由 MemStore 和 StoreFile 组成。

MemStore 是一块内存,默认大小是 128M,如果超过了这个大小,那么就会进行刷盘,把内存里的数据刷进到 StoreFile 中。

在 HStore 对应着的是 Table 里面的 Column Family,不管有 CF 中有多少的数据,都会存储在 HStore 中,为了避免访问不同的 HStore 而导致的效率低下。

HRegion 是 Hbase 中分布式存储和负载均衡的最小单元,但不是存储的最小单元。

一个 Hstore 可以有多个 StoreFile

逻辑存储结构

HBase的存储结构这个算讲得清楚吗

图中,列簇(Column Family)对应的值就是 info 和 area ,列( Column 或者称为 Qualifier )对应的就是 name 、 age 、 country 和 city ,Row key 对应的就是 Row 1 和 Row 2,Cell 对应的就是具体的值。

Row key :表的主键,按照字典序排序。

列簇:在 HBase 中,列簇将表进行横向切割。

列:属于某一个列簇,在 HBase 中可以进行动态的添加。

Cell : 是指具体的 Value 。

Version :在这张图里面没有显示出来,这个是指版本号,用时间戳(TimeStamp )来表示。

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

HBase的存储结构这个算讲得清楚吗

KEY 的组成是以 Row key 、CF(Column Family) 、Column 和 TimeStamp 组成的。

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

Region Server 和 Region 的关系

HBase的存储结构这个算讲得清楚吗

一个 Region Server 就是一个机器节点(服务器)

一个 Region Server 包含着多个 Region

一个 Region 包含着多个列簇 (CF)

一个 Region Server 中可以有多张 Table,一张 Table 可以有多个 Region

在HBase中查找不同的CF的数据

从不同的 CF 中查询 Row 3 主键的数据,结果集如下:

HBase的存储结构这个算讲得清楚吗

更加直观地显示,在 HBase 中是以 CF 为单元的存储结构。

睿格软件

服务热线

0371-56086616

13213119956(24小时)

微信客服

点击或微信扫一扫
马上联系

收起 >