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

本文介绍了HBase的HFile数据格式,包括Trailer、FileInfo、Data Index、Meta Index和Data Block等组成部分。Data Block作为基本I/O单元,其大小可调,影响顺序Scan和随机查询效率。KeyValue结构中包含了RowKey、Column Family、Qualifier、Time Stamp和Key Type等信息。根据访问模式,适当调整Data Block大小能优化HBase性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值