在 HBase 2.0 版本之前,虽然 HBase 能够存储从 1 字节到 10MB 大小的二进制对象 ,但其读写路径主要针对小于 100KB 的值进行了优化。当面对大量大小在 100KB - 10MB 之间的数据时,传统的存储方式就会暴露出问题。例如,当存储大量的图片、文档或短视频等中等大小对象时,由于 HBase 在处理这些数据时,分裂(split)和压缩(compaction)操作会引发写放大问题,从而导致 I/O 压力剧增,严重降低 HBase 的整体性能。
为了解决这些痛点,HBase MOB 特性应运而生。它专门针对 100KB - 10MB 大小的对象存储进行了优化,通过将这些中等大小对象的存储和管理从普通 region 中分离出来,避免了频繁的 region split 和 compaction 操作带来的性能损耗。这样一来,既保持了 HBase 原有的高性能、强一致性和低开销等优势,又提升了对中等大小对象的存储和处理能力,为 HBase 在更多领域的应用拓展了可能性。
一、HBase MOB介绍
一)架构设计亮点
HBase MOB 在架构设计上可谓独树一帜,它巧妙地借鉴了 HBase + HDFS 的架构思路 ,通过将文件引用和 MOB 对象的 IO 路径分离开来,从根本上解决了传统存储方式在处理中等大小对象时面临的困境。在这个架构中,当数据写入时,如果数据大小超过了设定的 MOB 阈值,就会被存储到专门的 MOB 区域。这个区域类似于一个独立的 “仓库”,专门存放中等大小的对象数据,而 HBase 表中则只保留对这些数据的引用,就像是一个记录物品存放位置的 “索引目录”。这样一来,当进行 region split 和 compaction 操作时,由于 MOB 对象已经被分离出去,这些操作不会对 MOB 对象产生影响,从而避免了写放大问题,大大提升了系统的整体性能和稳定性。
二)HBase MOB特性开启与配置指南
想要开启 HBase MOB 特性,首先得确保你的环境支持 HFile v3,因为这是 MOB 特性运行的基础。就好比建造高楼需要