总结:HFile

编程

一、逻辑结构图

二、物理结构图

三、HFile的逻辑分类说明

Scanned block section:扫描HFile时这个部分里面的所有block都会被读取到。

Non-scanned block section:和相面的相反,扫描HFile时不会被读取到。

Load-on-open-section:regionServer启动时就会加载这个部分的数据,不过不是最先加载。

Trailer:这个部分才是最先加载到内存的,记录了各种偏移量和版本信息。

HFile的物理分类

物理分类和逻辑分类对应的关系,可以在上面的图中看到

HFile有多个大小相等的block组成,Block分为四种类型:Data Block,Index Block,Bloom Block和Meta Block。

  • Data Block 用于存储实际数据,通常情况下每个Data Block可以存放多条KeyValue数据对;

  • Index Block和Bloom Block 都用于优化随机读的查找路径,其中Index Block通过存储索引数据加快数据查找,而Bloom Block通过一定算法可以过滤掉部分一定不存在待查KeyValue的数据文件,减少不必要的IO操作;

  • Meta Block 主要存储整个HFile的元数据。

Data Block

保存了实际的数据,由多个KeyValue 组成,块大小默认为64K(由建表时创建cf时指定或者HColumnDescriptor.setBlockSize(size)),在查询数据时,以block为单位加载数据到内存。

KeyValue 的结构

  • key 由这些内容组成:rowkey长度、rowkeyColumnFamily的长度、ColumnFamily、ColumnQualifier、KeyType(put、Delete、 DeleteColumn和DeleteFamily)

  • key length 固定长度的数值

  • value 二进制数据

  • value length 固定长度的数值

Index Block

 

 

 

 

 

参考链接:

HBase篇(4)-你不知道的HFile

HBase-HFile结构分析

HBase – 存储文件HFile结构解析

HFile原理解析

以上是 总结:HFile 的全部内容, 来源链接: utcz.com/z/510381.html

回到顶部