HBase體系結構

2021-12-29 21:29:19 字數 3296 閱讀 2094

hbase hbase是apache hadoop的資料庫,基於hdfs檔案系統

random,realtime read/write access to big data

開源、分布式、可擴充套件、面向列

larger tables--billions of rows x millions of columns

不支援表鏈結操作

不支援事務處理

hbase儲存的資料從邏輯上來看就像一張很大的表,其資料列可以根據需要動態增加。

每個單元(cell,由行和列所確定的位置)中的資料根據時間戳可以有不同版本。

在hbase之上還可以使用mapreduce計算模型來處理大規模資料。

hbase實際是map

(row key, column family: qulifier, timestamp) --> content

查詢時,指定:表名-->行鍵-->列族:列名-->版本號

將big table分不同的region儲存,regionsever和datanode在一台主機上。

hmaster為regionserver的主節點,不儲存表的資料,負責:

1、regionserver狀態管理;

2、regionserver負載均衡。

定址機制:hmaster不參與

兩張特殊的表:

-root-:記錄.meta的region資訊,只有乙個。位置去zookeeper查(/hbase/root;//對應值為一台主機)

.meta.:記錄使用者表的region資訊,多個

查詢時,會將路徑快取。

海量資料的秒級簡單查詢

每個列族乙個檔案

按行鍵拆分成乙個個的region

region儲存在region server中

可以啟動多個hmaster,通過zookeeper的master election機制保證總有乙個master執行

zookeeper儲存region的定址入口,監控region server的狀態,儲存hbase的schema

表名+開始/結束行鍵來標記每乙個region

每乙個region儲存乙個表裡面某段連續的資料,從開始主鍵到結束主鍵

資料的儲存:

hregionserver包括兩大部分:hlog部分和hregion部分。

hlog用於儲存日誌,採用先寫日誌的方式(write-ahead log)。

hregion部分包含很多region,儲存實際資料。

每乙個region由很多store組成,每個store儲存的是乙個列族(columnfamily)的資料。

每乙個store包含一塊駐留記憶體的memstore和多個storefile。

資料首先更新到memstore中,達到域值之後再更新到對應的storefile中。

storefile是hbase的最小單元,負責實際資料的儲存。

hbase把同一列族裡面的資料儲存在同乙個目錄下

hbase不涉及資料的直接刪除和更新操作,所有資料通過追加方式進行更新。

資料的刪除和更新在hbase合併(compact)的時候進行。

當store中storefile的數量超過設定域值時將觸發合併操作,將多個storefile檔案合併成乙個storefile。

資料的更新:

更新資料時,資料被分配到對應的hregionserver,首先進行hlog日誌登記。

在操作寫入hlog之後,commit()呼叫才會將其返回給客戶端。

hlog用於故障恢復,若一台hregionserver發生故障,其所維護的regions將被重新分配到新的機器上。

這是hlog會安裝region進行劃分,新的機器在載入region時通過hlog對資料進行恢復。

region的**:

當region超過域值時,hregionserver呼叫hregion.closeandsplit()將其拆分成兩個,

並且報告給hmaster,讓其決定由哪台hregionserver來存放新的region。

這個拆分過程十分迅速,兩個新的hregionserver最初只保留原來hregionfile檔案的引用。

這是舊的hregionserver處於停止服務的狀態,當新的hregion拆分完成並且把引用刪除後,舊的hregion才會刪除

region的合併:

兩個region可以通過呼叫hregionserver.closeandmerger()合併成乙個新的region。

當前版本下,執行此操作需要兩台hregionserver停機。

hmaster:

1、管理使用者對table的增刪改查操作;

2、管理hregionserver的負載均衡;

3、在hregion**後,負責新hregion的分配;

4、在hregionserver停機後,負責hregions的遷移。

root表和meta表:

乙個hregion的鍵:表名+開始主鍵+唯一id(tablename+startkey+regionid),通過這個標識區分不同的region。

此為元資料,meta。

元資料本身也被存放在hregion裡,稱包含元資料的表為meta table,裡面儲存的是region識別符號和伺服器的對映

meta table的regions儲存在root table中。

元資料表和根資料表的每一行都包含乙個列族(info列族):

info:regioninfo //hregion識別符號

info:server //伺服器位址

info:startcode //在hregion伺服器啟動時傳給主伺服器,讓主伺服器確定這個hregion伺服器的資訊沒有更改

hbase啟動時,hmaster先掃瞄根資料表,因為這個表只有乙個region,所以這個region的名字是被寫死的。

有時需要把根資料表分配到乙個hregionserver中。

當根資料表被分配好後,hmaster掃瞄根資料表,獲得元資料表的名字和位置,然後把元資料表分配到不同的hregionserver中。

最後掃瞄元資料表,獲得所有region區域的資訊,把它們分配給不同的hregion伺服器。

客戶端快取已知的root表和meta表,從而提高訪問效率。

zookeeper的作用:

1、儲存root表和meta表的位置;

2、監控集群狀態;

3、保證在同一時刻只有乙個hmaster。

hbase特點:

1、資料型別只有簡單的字串型別

2、資料操作只有很簡單的插入、查詢、刪除、清空等操作,沒有複雜的表與表之間的關係

3、基於列儲存,每個列族由幾個檔案儲存,不同列族檔案是分離的

4、資料維護儲存多個版本

5、可伸縮性

HBase體系結構

hbase hbase是apache hadoop的資料庫,基於hdfs檔案系統 random,realtime read write access to big data 開源 分布式 可擴充套件 面向列 larger tables billions of rows x millions of c...

HBase體系結構

hbase的伺服器體系結構遵從簡單的主從伺服器架構,它由hregion伺服器 hregion service 群和hbase master伺服器 hbase master server 構成。hbase master伺服器負責管理所有的hregion伺服器,而hbase中所有的伺服器是通過zooke...

Hbase的體系結構

包含訪問hbase的介面,並維護表對應的regionserver和region快取實現對hregionserver的快速訪問 master 1 管理集群中所有的regionserver,包括regionserver的負載均衡,regionserver的宕機恢復,region的遷移 2 響應使用者對錶...