HBase StoreFile原理总结

本文详细介绍了HBase StoreFile的原理,包括StoreFile的定义、HFile的组成、内部Block结构、数据块索引和Bloom过滤器等。StoreFile是HBase数据在磁盘上的存储形式,由多个HFile组成,每个HFile包含多层索引以加快数据查找。HFile由Block组成,每个Block有特定的结构和索引,其中Bloom过滤器用于减少不必要的磁盘读取,提高查询效率。文章还讨论了数据flush的过程和触发条件。

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

HBase StoreFile原理总结

1. StoreFile是什么

  1. 在hbase架构设计中,本身hbase基于hdfs进行数据存储。同时为了提升效率,数据会有一个memstore、block cache来做数据缓存,使用wal日志文件来防止内存数据丢失。但最终都会落地到磁盘中,这个磁盘文件就是store file。具体架构可以看我另一篇博客HBase架构原理
  2. 一个region中会有多个store,按照此前查看hdfs中信息可知,一个列族一个store文件夹,一个列族中会有1到多个HFile(store files)文件
  3. store file或者说HFile由更小的block组成。block size是基于每个列族进行配置的,数据压缩也是以块为单位。后续会列文讲解一下hdfs中的数据压缩机制和应用。
  4. HFile,顾名思义,就是hdfs中文件存储的一种格式。包含一个多层索引,允许HBase在不读取整个文件的情况下查找数据,这些索引的大小是块大小(默认64KB)
  5. 注意,HBase中数据是以key value形式存储,所以如何设计rowkey,以及如何降低rowkey的存储空间都是需要仔细考量的。
  6. 可以使用hbase自带命令查看HFile
hbase hfile -p -f /hbase/data/default/t1/157b4ab800b1d9c89a2e3b22fc511a46/base_info/9ad461c1c4bc47b7a4a772644578c145

2.HFile

2.1 HFile组成

在这里插入图片描述
,也可以查看官网文档中说明 hbase doc
在这里插入图片描述

2.2 HFile内部block

  • block是 hbase存储的最小单元,HFile只是block之上的一种抽象或者包装。而为了提高IO效率,region server又基于LRU(最近最少淘汰算法)进行block 的cache机制设计。
  • 每个block块的大小可以izai创建table的时候通过参数设置,否则默认是64kb。
  • 显而易见,大号的block有利于顺序scan,因为关联的数据都会在一个block中。小号的block有利于随机查询
  • 组成截图,这里参考官网截图。每个block块中,除了开头的magic魔数之外(一个随机数字,为了防止数据损坏,真的损坏了,也只是随机数字修改了而不是真实存储的数据修改了。实际中数据开头是容易在读写操作中损坏的)

在这里插入图片描述
在这里插入图片描述

  1. Data Block 段–保存表中的数据,这部分可以被压缩
  2. Meta Block 段 (可选的)–保存用户自定义的kv对,可以被压缩。
  3. File Info 段–Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。
  4. Data Block Index 段–Data Block的索引。每条索引的key是被索引的block的第一条记录的key。
  5. Meta Block Index段 (可选的)–Meta Block的索引。
  6. Trailer记录了HFile的基本信息,保存了上述每个段的偏移量(即起始位置)[索引].
    Trailer–这一段是定长的保存了每一段的偏移量,读取一个HFile时,会首先 读取Trailer,Trailer保存了每个段的起始位置(段的Magic Number用来做安全check),然后,DataBlock Index会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个 block读取到内存中,再找到需要的key。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值