一、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