Hbase原理系列 架構

2021-08-28 08:01:28 字數 2162 閱讀 2325

體系圖:

1.client向hregionserver傳送寫請求。

2.hregionserver將資料寫到hlog(write ahead log)。為了資料的持久化和恢復。

3.hregionserver將資料寫到記憶體(memstore)

4.反饋client寫成功。

1.當memstore資料達到閾值(預設是128m),將資料刷到硬碟,將記憶體中的資料刪除,同時刪除hlog中的歷史資料。

2.並將資料儲存到hdfs中。

3.在hlog中做標記點。

1.當資料塊達到8塊,hmaster將資料塊載入到本地,進行合併

2.當合併的資料超過512m,進行拆分,將拆分後的region分配給不同的hregionserver管理

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

4.注意:hlog會同步到hdfs

1.通過zookeeper .meta.表定位hregionserver。

2.資料從記憶體和硬碟合併後返回給client

3.資料塊會快取

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

2.記錄region在哪台hregion server上

3.在region split後,負責新region的分配; 

4.新機器加入時,管理hregion server的負載均衡,調整region分布

5.在hregion server宕機後,負責失效hregion server 上的regions遷移。

hregion server主要負責響應使用者i/o請求,向hdfs檔案系統中讀寫資料,是hbase中最核心的模組。

hregion server管理了很多table的分割槽,也就是region。

2層結構其實完全能滿足業務的需求,因此0.96版本以後將-root-表去掉了。

訪問路徑變成了3步:

第2步:client請求.meta.所在的regionserver獲取訪問資料所在的regionserver位址,client會將.meta.的相關資訊cache下來,以便下一次快速訪問。

第3步:client請求資料所在的regionserver,獲取所需要的資料。

總結去掉-root-的原因有如下2點:

其一:提高效能

其二:2層結構已經足以滿足集群的需求

這裡還有乙個問題需要說明,那就是client會快取.meta.的資料,用來加快訪問,既然有快取,那它什麼時候更新?如果.meta.更新了,比如region1不在rerverserver2上了,被轉移到了rerverserver3上。client的快取沒有更新會有什麼情況?

其實,client的元資料快取不更新,當.meta.的資料發生更新。如上面的例子,由於region1的位置發生了變化,client再次根據快取去訪問的時候,會出現錯誤,當出現異常達到重試次數後就會去.meta.所在的regionserver獲取最新的資料,如果.meta.所在的regionserver也變了,client就會去zk上獲取.meta.所在的regionserver的最新位址。

八.lsm樹

為了克服b+樹的弱點,hbase引入了lsm樹的概念,即log-structured merge-trees。

為了更好的說明lsm樹的原理,下面舉個比較極端的例子:

現在假設有1000個節點的隨機key,對於磁碟來說,肯定是把這1000個節點順序寫入磁碟最快,但是這樣一來,讀就悲劇了,因為key在磁碟中完全無序,每次讀取都要全掃瞄;

那麼,為了讓讀效能盡量高,資料在磁碟中必須得有序,這就是b+樹的原理,但是寫就悲劇了,因為會產生大量的隨機io,磁碟尋道速度跟不上。

lsm樹本質上就是在讀寫之間取得平衡,和b+樹相比,它犧牲了部分讀效能,用來大幅提高寫效能。

它的原理是把一顆大樹拆分成n棵小樹, 它首先寫入到記憶體中(記憶體沒有尋道速度的問題,隨機寫的效能得到大幅提公升),在記憶體中構建一顆有序小樹,隨著小樹越來越大,記憶體的小樹會flush到磁碟上。當讀時,由於不知道資料在哪棵小樹上,因此必須遍歷所有的小樹,但在每顆小樹內部資料是有序的。

Hbase原理與架構

1 client向hregionserver傳送寫請求。2 hregionserver將資料寫到hlog write ahead log 為了資料的持久化和恢復。3 hregionserver將資料寫到記憶體 memstore 4 反饋client寫成功。1 當memstore資料達到閾值 預設是1...

HBase表的架構原理

hbase總體架構圖 hbase table的基本單位是region,乙個table相應多個region。table層級關係例如以下 table hbase table region regions for the table store store per columnfamily for eac...

HBASE部分 HBASE的架構

hbase的架構 包含訪問hbase的介面並維護cache來加快對hbase的訪問 zookeeper 保證任何時候,集群中只有乙個master 存貯所有region的定址入口。實時監控region server的上線和下線資訊。並實時通知master 儲存hbase的schema和table元資料...