You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HBase Block Cache更新/失效机制及读写路径疑问

HBase读写流程疑问解答

你的理解确实有误,HBase的读取优先级并非先查Block Cache再查MemStore,正确的查询顺序是:

  • 先查MemStore(内存中的未持久化数据)
  • 再查Block Cache(磁盘数据的内存缓存)
  • 最后查磁盘上的HFile

所以当你执行Put写入新值Y到MemStore后,读取操作会优先从MemStore获取最新的Y,不会去读取Block Cache里的旧值X,这完全符合HBase保证数据最新的设计逻辑。

关于Block Cache的状态:

  • Put操作本身不会主动更新或失效Block Cache中的旧值X。MemStore里的Y在flush到HFile之前,Block Cache里的X仍然存在,但因为读取优先级的关系,不会被返回。
  • 当MemStore中的Y被flush到HFile后,后续如果有读取操作命中这个新的HFile数据块,HBase会把Y加载到Block Cache中;而旧的X缓存块会通过LRU(最近最少使用)策略逐渐被淘汰出Block Cache,不会主动清理。

补充一点:HBase是基于版本的存储系统,每个写入操作都会生成带时间戳的新版本。即使读取时同时从多个来源拿到数据(比如MemStore的Y和Block Cache的X),也会自动返回时间戳最新的那个版本——而MemStore里的Y时间戳肯定比Block Cache里的X新,所以最终结果还是Y。

内容的提问来源于stack exchange,提问作者sachin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:45:31