一、HFile结构介绍

为了支持数据的随机查询,HFile结构分为六个部分:
1、数据块–保存表中的数据,每一个数据块由块头和一些keyValue(record)组成,key的值是严格按照顺序存储的。块大小默认为64K(由建表时创建cf时指定或者HColumnDescriptor.setBlockSize(size)),这一部分可以压缩存储。在查询数据时,是以数据块为单位从硬盘load到内存。查找数据时,是顺序的遍历该块中的keyValue对。
2、元数据块 (可选的)–保存用户自定义的kv对,可以被压缩。比如booleam filter就是存在元数据块中的,该块只保留value值,key值保存在元数据索引块中。每一个元数据块由块头和value值组成。可以快速判断key是都在这个HFile中。
3、File Info–Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。
4、数据索引块 –Data Block的索引,每条索引的key是被索引的block的第一条记录的key(格式为:头信息,数据块offset数据块大小块第一个记录的key,........)。

本文详细介绍了HFile的存储结构,包括数据块、元数据块、File Info、数据索引块、元数据索引块和Trailer。重点讨论了数据块的组织方式、索引层级的影响因素以及如何快速定位rowkey。通过对HFile结构的理解,有助于优化HBase的数据查询效率。
最低0.47元/天 解锁文章
736

被折叠的 条评论
为什么被折叠?



