Hbase數據存儲圖解與數據檢索流程

一、Hbase數據存儲圖解

Hbase數據存儲圖解與數據檢索流程

二、hbase表數據的檢索流程圖(讀和寫的流程)

1、hbase在Hadoop集群中的物理架構

由圖中可以看出,存儲模塊主要包括了ZooKeeper集群、HMaster、HRegionServer。

ZooKeeper:

Hbase是強依賴於ZooKeeper,我們讀或寫一個表的數據,都會優先訪問ZooKeeper。

通常是集群中單獨的3/5臺服務器。

HMaster通常是Hadoop集群中的一臺或兩臺(backup-Master)。

HRegionServer通常是Hadoop集群中的部分或全部

HRegionServer通常和datanode部署在同一臺服務器上

比如datanode是10個

HRegionServer可以是10個或小於10個

2、hbase架構圖重要組件的名稱及作用

client:

讀/寫訪問hbase的用戶

ZooKeeper:

基於觀察者模式監控master和regionserver運行狀態,保證hbase的高可用性,這是因為hbase是強依賴於ZooKeeper的。

存儲了hbase的尋址入口

存儲了hbase表的meta元數據表的位置信息

Meta也是一張表,meta表一般只有一個region

region存在哪臺regionserver上

meta元數據表存儲了哪些信息:

一張表有哪些reigon

region分別分配到哪些regionserve上r

每個reigon的startkey和stopkey的大小

master:

管理regionserver並分配表的region給regionserver

對集群的region的數量進行負載均衡管理

master會藉助ZooKeeper感知regionserver的上線和下線

master一般會有兩臺(backup-Master),保證master的高可用性

master不參與hbase表數據的讀和寫,負載通常比較低

master宕機一段時間內集群可以保持正常的讀寫

regionserver:

管理所在服務器節點上的所有region

負責響應客戶端的讀寫請求(IO)

三大機制(flush、compact、split)

Hlog:

預寫日誌

用來臨時保存寫入到memstore中的數據,防止宕機造成memstore中的數據丟失

Hadoop:

利用hdfs給hbase提供存儲,hbase是相當於Hadoop的一個客戶端

hdfs上存儲了hbase的兩種數據:

HFile :

hbase表的數據文件

Hflie文件是Hadoop的二進制格式文件

Hlog :

預寫日誌

Hlog是Hadoop的sequence格式的文件

3、hbase表數據的寫入流程:(根據rowkey進行寫入)Georgia

A. client先去訪問ZooKeeper,從ZooKeeper上獲取meta表的位置信息

i. 以前的版本hbase的系統表除了meta表還有root表

ii. 在root表中存儲了meta表的位置信息

iii. 新版本中將meta表的位置信息直接存入ZooKeeper中

B. client向meta表的region所在的regionserver發起訪問,讀取meta表的數據,獲取了hbase集群上所有的表的元數據

C. 根據meta表的元數據信息(某張表有幾個region及region如何分配及每個reigon的startkey和stopkey),client找到當前要寫入的表對應的region及所在regionserver信息

D. client向對應的regionserver發起寫入請求

E. regionserver收到client請求並響應,client先把數據寫入到Hlog防止數據丟失

F. 再把數據寫入到memstore內存緩存區(默認大小128M)

G. 當數據寫入到Hlog及memstore內存緩存區都成功時,寫入才算成功

H. 當memstore達到128M或其他的因素的觸發,會將memstore中的數據flush成storeFile

I. 當storeFile越來越多,會觸發compact合併,將多個storeFile文件最終合併成一個文件

i. 合併分為minor compact 和major compact

ii. 在大合併期間打上‘刪除’標籤的cell或者過期的cell會被統一清理

J. 當某個store下的某個storeFile文件的最終合併後的大小達到10G時,會觸發整個region的split分割,一個region一分為二,由master進行分配

注意:一個store下面可能有多個storefile

4、hbase表數據的讀流程:(根據rowkey讀)

1、client先去訪問zookeeper,從zookeeper上獲取meta表的位置信息

以前的版本hbase的系統表除了meta表還有root表

在root表中存儲了meta表的位置信息

新版本中將meta表的位置信息直接存入zookeeper中

2、client向meta表的region所在的regionserver發起訪問,讀取meta表的數據,獲取了hbase集群上所有的表的元數據

3、根據meta表的元數據信息(某張表有幾個region及region如何分配及每個reigon的startkey和stopkey),client找到當前要寫入的表對應的region及所在regionserver信息

4、client向對應的regionserver發起讀請求

5、regionserver收到客戶端的讀請求,會先掃描memstore,在掃描blockcache(讀緩存),沒有找到數據後再去讀取storeFile文件

6、regionserver將數據響應給client

【1】想了解大數據知識,可以關注我下方評論轉發後,私信“資料”。

【2】部分資料有時間限制,抓緊時間吧!

感謝大家支持!


分享到:


相關文章: