在大多數的工廠環境下,往往只會設計乙個列族,因為列族數量過多會導致如下的效能問題:
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 的效能低下。
因此,在設計列族時,過多的列族會導致很多效能問題,列族設計最重要的一點就是減 少列族數量。
HBase學習 列族
列在列簇中依照字典排序。例如,列簇是基礎資訊或公司網域名稱或水果類。列是基礎資訊 面貌 基礎資訊 年齡 公司網域名稱 org 公司網域名稱 edu 水果類 蘋果 水果類 香蕉。列 列簇 列修飾符 列根據列簇分組。列簇的特點 1 一張表通常有一單獨的列簇,而且一張表中的列簇不會超過5個。2 列簇必須在...
HBase系列 列族設計及影響
hbase表中的每個列,都歸屬於某個列族。列族是表的schema的一部 分 而列不是 必須在使用表之前定義。列名都以列族作為字首。例如 courses history,courses math都屬於courses 這個列族。hbase官網建議每張表的列族數建議設在1 3之間,所以說列族的設計並不是越...
原創 HBase中列族設計的原則
hbase表在進行模式設計時,首先考慮的乙個問題是,這個表應該有多少個列族。一張表設計多少列族合理呢?相信這個問題困擾著不少hbase初學者。讓我們來先簡單分析一下hbase的實現原理。hbase中的表 和其資料庫一樣,也是由行和列組成的,雖說模式有些不同。hbase中的表可能達到數十億行和數百萬列...