原創 HBase中列族設計的原則

2021-08-27 21:44:14 字數 637 閱讀 1168

hbase表在進行模式設計時,首先考慮的乙個問題是,這個表應該有多少個列族。一張表設計多少列族合理呢?相信這個問題困擾著不少hbase初學者。讓我們來先簡單分析一下hbase的實現原理。

hbase中的表

和其資料庫一樣,也是由行和列組成的,雖說模式有些不同。hbase中的表可能達到數十億行和數百萬列,表的大小可能達到tb級,顯然不可能在一台機器上存放整張表。相反,一張表在儲存時會切分成小一點兒的資料單位,然後分配到多台伺服器上。這個小一點兒的資料單位叫region。hbase表中資料的訪問是通過其對應region來進行管理的,region內對列族的管理如下圖:

每個列族都會memstore和blockcache,資料在硬碟中以hfile形式儲存。hfile不會儲存跨列族的資料。

因此,根據上圖可以得出,hbase表中列族設計的原則是:

一、同乙個列族裡儲存相似訪問模式的所有有資料。

可以理解為關聯式資料庫中一對一關係,一對一關係的兩張表,在hbase中可以儲存在一張表中,放到不同的列族。

二、大多數的表,設計乙個列族就夠了。

在hbase中,高錶比寬表效能好,可以設計多張表來滿足需求。

Hbase 列族設計

在大多數的工廠環境下,往往只會設計乙個列族,因為列族數量過多會導致如下的效能問題 1.flush 會產生大量 io flush 的最小單元是 region,也就是說乙個 region 中的某個列族做 flush 操作,其他的 列族也會 flush,對每個列族而言,每次 flush 都會產生乙個檔案,...

HBase系列 列族設計及影響

hbase表中的每個列,都歸屬於某個列族。列族是表的schema的一部 分 而列不是 必須在使用表之前定義。列名都以列族作為字首。例如 courses history,courses math都屬於courses 這個列族。hbase官網建議每張表的列族數建議設在1 3之間,所以說列族的設計並不是越...

hbase中列簇和列 HBase表 行與列族

hbase表 hbase 中表是在 schema 定義時被預先宣告的。可以使用以下的命令來建立乙個表,在這裡必須指定表名和列族名。在 hbase shell 中建立表的語法如下所示 create hbase行 hbase中的行是邏輯上的行,物理上模型上行是按列族 colomn family 分別訪問...