hbase 快速入门之---HFILE数据格式

来源:互联网 发布:java 获取文件路径was 编辑:程序博客网 时间:2024/06/16 18:07

ØHFile文件不定长,长度固定的块只有两个:TrailerFileInfo
ØHFile写到硬盘时,Trailer被写到最后。 Trailer中指针指向其他数据块的起始点。
ØFile Info中记录了文件的一些Meta信息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY
ØData IndexMeta Index块记录了每个Data块和Meta块的起始点
ØData BlockHBase I/O的基本单元,为了提高效率,HRegionServer中有基于LRUBlock Cache机制
Ø每个Data Block的大小可以在创建一个Table的时候通过参数指定,大号的Block有利于顺序Scan,小号Block利于随机查询
Ø每个Data Block除了开头的Magic以外就是一个个KeyValue对拼接而成, Magic内容就是一些随机数字,目的是防止数据损坏
HFile里面的每个KeyValue对就是一个简单的byte数组。这个byte数组里面包含了很多项,并且有固定的结构。

ØKeyLengthValueLength:两个固定的长度,分别代表KeyValue的长度
ØKey部分
Row Length是固定长度的数值,表示RowKey的长度,Row就是RowKey
Column Family Length是固定长度的数值,表示Family的长度,接着就是Column Family,再接着是Qualifier,然后是两个固定长度的数值,表示Time StampKey Type(Put/Delete)Value部分没有这么复杂的结构,就是纯粹的二进制数据
HFile 中的数据块大小默认为 64KB。如果访问 HBase 数据库的场景多为有序的访问,那么建议将该值设置的大一些。如果场景多为随机访问,那么建议将该值设置的小一些。一般情况下,通过调整该值可以提高 HBase 的性能。

原创粉丝点击