1. 程式人生 > >Hbase 列族設計

Hbase 列族設計

    在大多數的工廠環境下,往往只會設計一個列族,以為列族數量過多會導致如下的效能問題:

1. Flush 會產生大量 IO

    Flush 的最小單元是 region,也就是說一個 region 中的某個列族做 Flush 操作,其他的 列族也會 Flush,對每個列族而言,每次 Flush 都會產生一個檔案,頻繁 Flush 必然會產生更 多的 StoreFile,StoreFile 數量增多又會產生更多的 Compact 操作,Flush 和 Compact 都是很 重的 IO 操作。

2. Split 操作可能會導致資料訪問效能低下

    Split 的最小單元是 region, 如果這個 region 有兩個列族 A、B,列族 A 有 100 億條記錄,列族 B 有 100 條記錄,如果最終 Split 成 20 個 region, 那麼列族 B 的 100 條記錄會分 布到 20 個 region 上, 掃描列族 B 的效能低下。

    因此,在設計列族時,過多的列族會導致很多效能問題,列族設計最重要的一點就是減 少列族數量。