在 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 特性運行的基礎。就好比建造高樓需要