开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第15天
一、本篇笔记的重点内容
- HBase的物理存储模型
- HBase表、HRegion和存储文件之间的关系
- MemStore
- HFile
二、详细知识点介绍
HBase表、HRegion和存储文件之间的关系
在HBase中,一张表可以由多个存放到不同服务器上的Region构成,HBase表、HRegion和存储文件之间的关系可由下图来示意。
Region按大小分割的,每个表一开始只有一个Region,随着数据不断插入表,Region不断增大,当增大到一个阀值的时候,Region就会等分会两个新的Region(Region Server处理),当table中的行不断增多,就会有越来越多的region。
Region虽然是分布式存储的最小单元,但并不是存储的最小单元。
Region由一个或者多个Store组成,每个store保存一个columns family。每个Strore又由一个memStore和0至多个StoreFile组成。
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块的偏移量。