Java大數據學習16--Hbase原理概述

下面來簡述一下hbase的各項流程的原理。包括Hbase的讀,寫流程,數據flush流程,數據合併流程,以及Hbase各個角色的職責。首先放一個Hbase的體系圖。

Hbase主要是由Client,HMaster,HRegionServer組成,當然也需要Zookeeper,但他不屬於Hbase的一部分。之後我們再說它。

先說說上面三種角色在Hbase中的職責。

一、Hmaster的職責

1、管理用戶對Table的增、刪、改、查操作;

2、記錄region在哪臺Hregion server上

3、在Region Split後,負責新Region的分配;

4、新機器加入時,管理HRegion Server的負載均衡,調整Region分佈

5、在HRegion Server宕機後,負責失效HRegion Server 上的Regions遷移。

 

二、HRegionServer的職責

1、HRegion Server主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據,是HBASE中最核心的模塊。

HRegion Server管理了很多table的分區,也就是region。

 

三、Client的職責

1、HBASE Client使用HBASE的RPC機制與HMaster和RegionServer進行通信

2、管理類操作:Client與HMaster進行RPC;

3、數據讀寫類操作:Client與HRegionServer進行RPC。

然後是各個操作的流程:

 

四、Hbase讀流程

1、通過zookeeper和-ROOT- .META.表定位hregionserver。

2、數據從內存和硬盤合併後返回給client

3、數據塊會緩存

 

五、Hbase寫流程

1、client向Hregionserver發送寫請求。

2、Hregionserver將數據寫到hlog(write ahead log)。爲了數據的持久化和恢復。

3、Hregionserver將數據寫到內存(memstore)

4、反饋client寫成功。

 

六、數據flush流程

1、當memstore數據達到閾值(默認是64M),將數據刷到硬盤,將內存中的數據刪除,同時刪除Hlog中的歷史數據。

2、並將數據存儲到hdfs中。

3、在hlog中做標記點。

 

七、數據合併流程

1、當數據塊達到4塊,hmaster將數據塊加載到本地,進行合併

2、當合並的數據超過256M,進行拆分,將拆分後的region分配給不同的hregionserver管理

3、當hregionser宕機後,將hregionserver上的hlog拆分,然後分配給不同的hregionserver加載,修改.META.

注意:hlog會同步到hdfs

 

喜歡的朋友點點關注

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章