Stories

Detail Return Return

【趙渝強老師】HBase的邏輯存儲結構 - Stories Detail

HBase的邏輯存儲結構主要包括:命名空間(NameSpace)、表(Table)和列族(Column Family)。視頻講解如下:
https://www.bilibili.com/video/BV1T3BrYcE8a/?aid=113529894410...

下面分別進行介紹。

一、 命名空間(NameSpace)

HBase的命名空間相當於Oracle和MySQL中的數據庫,它是對錶的邏輯劃分。不同的HBase命名空間類似於關係型數據庫中的不同的數據庫。利用命名空間的邏輯管理功能,可以實現在多租户場景下做到更好的資源和數據隔離。在系統表hbase:namespace中保存了的所有的命名空間信息。視頻講解如下:
https://www.bilibili.com/video/BV1nvBsY6EhX/?aid=113535631825...

通過下面的語句可以管理和操作HBase的命名空間。

(1)查詢系統表hbase:namespace

> scan 'hbase:namespace'

# 輸出的信息如下:
ROW        COLUMN+CELL    
 default    column=info:d, timestamp=1631601267690, value=\x0A\x07default
 hbase        column=info:d, timestamp=1631601267862, value=\x0A\x05hbase
2 row(s)
提示:這裏可以看出在默認的情況下,HBase存在兩個命名空間,即:default和hbase。如果沒有指定命名空間,新表將創建在default命名空間下;而hbase命名空間是系統命名空間,一般不用於普通操作。

(2)查看命名空間也可以通過執行list_namespace命令,例如:

> list_namespace

# 輸出的信息如下:
NAMESPACE                   
default                     
hbase                       
2 row(s)

(3)創建一個新的命名空間mydemo,並在mydemo命名空間中創建一張新表。

> create_namespace 'mydemo'
> create 'mydemo:table1','info'

(4)查看命名空間mydemo中的表。

> list_namespace_tables 'mydemo'

# 輸出的信息如下:
TABLE                     
table1                    
1 row(s)

二、 表(Table)

HBase的表對應於關係型數據庫中的一張表,HBase以表為單位組織數據,表由多行組成。每一行由一個RowKey和多個列族組成。Rowkey用於唯一標識一條記錄。不同行的Rowkey可以重複,但相同的Rowkey表示同一條記錄。為了加快查詢數據的速度,HBase表中的所有行都按照RowKey的字典順序進行排列。

視頻講解如下:
https://www.bilibili.com/video/BV1m5zKYNEQF/?aid=113543902928...

表在行的方向上分隔為多個Region,而Region是HBase中分佈式存儲和負載均衡的最小單元。因此在同一個Region Server上可能保存了不同的Region,但一個Region只會屬於一個Region Server。Region按大小分隔,而表中每一行只能屬於一個Region。隨着數據不斷插入表,會使得Region不斷增大。當Region中的某個列族達到一個閾值時就會分成兩個新的Region,分裂後每一個新的Region大小是原來Region的一半。

三、 列族(Column Family)

由於表中的一行上可能存在多個列族,因此Region可以被進一步地劃分。每一個Region有一個或多個Store組成,HBase會把一起訪問的數據放在一個Store裏面,即一行上有幾個列族,也就有幾個Store。一個Store由一個MemStore和多個Store File組成。

視頻講解如下:
https://www.bilibili.com/video/BV15hz3YfEfX/?aid=113549019976...

列族中包含列,列不需要事先創建。當插入數據時沒有該列,HBase會自動創建列;列又是由單元格組成。

提示:MemStore是HBase的寫緩存,用於保存修改的數據。當MemStore的大小達到一個閥值時,HBase會有一個線程來將MemStore中的數據刷新到HBase的數據文件中生成一個快照。這個快照就是Store File。
user avatar ivictor Avatar xiaoyi_ces Avatar
Favorites 2 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.