HBase数据模型(二) | 「掘金日新计划 · 12 月更文挑战」

106 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天

一、本篇笔记的重点内容

  • HBase的物理存储模型
  • HBase表、HRegion和存储文件之间的关系
  • MemStore
  • HFile

二、详细知识点介绍

HBase表、HRegion和存储文件之间的关系

在HBase中,一张表可以由多个存放到不同服务器上的Region构成,HBase表、HRegion和存储文件之间的关系可由下图来示意。

image.png Region按大小分割的,每个表一开始只有一个Region,随着数据不断插入表,Region不断增大,当增大到一个阀值的时候,Region就会等分会两个新的Region(Region Server处理),当table中的行不断增多,就会有越来越多的region。

image.png

Region虽然是分布式存储的最小单元,但并不是存储的最小单元。

Region由一个或者多个Store组成,每个store保存一个columns family。每个Strore又由一个memStore和0至多个StoreFile组成。

image.png

MemStore

MemStore是内存的存储对象,只有当MemStore满了之后Hbase会在HDFS上新生成一个新的Hfile,然后把  MemStore中的内容写到这个Hfile中,Hfile直接和HDFS打交道,是数据的存储实体。

HFile

HFile是由一个一个的块组成的,在Hbase中一个快的大小默认为64kb,由列族上的BLOCKSIZE属性决定。这些块区分不同的角色:

1) Data:数据块。每个HFile有多个Data块。我们存储在Hbase表中的数据就在数据块中。Data块其实是可选的,但是几乎很难看到不包含Date块的HFile。

2) Meta:元数据块。Meta也是可选的,Meta块只有在文件关闭的时候才会写入,Meta存储了该文件的元数据信息。

3) FileInfo:文件信息,其实也是一种数据存储快,FileInfo是HFile的必要组成部分。它只有在文件关闭的时候写入,存储的是这个文件的信息。

4) DataIndex:存储Date块索引信息的块文件。索引的信息其实也就是Data块的偏移量。DataIndex也是可选的,有Data块才有DataIndex。

5) Trailer:必选的,它存储了FileInfo,DateIndex,MetaIndex块的偏移量。

image.png