总结: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