HBase的架構

 

1、整體架構

2、HBase中涉及的角色及每個角色的具體功能

2.1 HMaster

2.2 RegionServer

2.2.1 保證高可靠性的WAL

2.3 zookeeper

2.3.1 客戶端連接RS

3、RS內部剖析

3.1  Region

3.2 Store

3.2.1 memstore

3.2.2 HFile


1、整體架構

· HMaster

       · 多個RegionServer

                  · HLog

                  · BlockCache

                  · 多個Region

                              · 多個Store

                                         · MemStore

                                         · 多個StoreFile  (以HFile的文件格式存儲於HDFS中)

· HBaseClient

· Zookeeper

· HMBackup

2、HBase中涉及的角色及每個角色的具體功能

2.1 HMaster

  1. 管理所有的RegionServer,當HM通過zookeeper得知某個RS宕機或進程故障,由HM將該RS原來所負責的Regions轉移到其他正常的RS上。
  2. 負責表、列族和region的相關操作,例如表的create,modify,remove,enable,disable;列族的add,modify,remove;region的move,assign,unassign;以及權限,表的分割與合併等。
  3. 負責集羣的負載均衡並定期檢查和清理hbase:meta表

與HDFS不同的是,客戶端獲取數據由客戶端直連RS,所以HM掛了依然可以查詢數據,但不能建新的表;HBase不若HDFS般依賴Master。

2.2 RegionServer

負責服務和管理Region,是用戶數據表的實際管理者。

數據在分佈式集羣中會被水平分區,每個RS管理一部分分區,負責數據的寫入,查詢,緩存和故障恢復等。

同時在分佈式集羣中,RS與HDFS的DN通常按1:1的比例安裝,這樣RS的數據文件可以存一個副本於本機的DN中,從而在讀取時可利用HDFS的短路徑讀取(short circuit)繞過網絡請求,降低讀取時延。

  1. 負責數據的讀取和寫入,比如get,put,delete,next等
  2. Region的拆分和壓縮。拆分Region確實是RS作出的本地決策,但拆分過程本身必須與許多參與者協調。RS在Region拆分前後通知HM,從而更新.meta.表,以便客戶端發現新的子Region,並重新排列HDFS中的目錄結構和數據文件。
  3. 一些後臺操作:檢查拆分並處理輕微壓縮,檢查主要的壓縮,定期刷新Memstore到Storefile中的內存寫入,定期檢查RS的WAL(write ahead log)

2.2.1 保證高可靠性的WAL

每個RS中有一個HLog,在對數據進行寫入的所有操作時,都要先將操作記錄到HLog中,如果操作未成功寫入到HLog,那麼也不會寫入到相應數據所在的RS的store的MemStore中。

2.3 zookeeper

存儲着hbase:meta信息。HBase:meta表記錄着HBase中所有Regoin相關的信息。Zookeeper管理了所有RS的信息,包括具體的數據段存放在哪個RS上。

RS定時向zookeeper發送心跳。

2.3.1 客戶端連接RS

客戶端先與zookeeper通信,查詢出需要連接哪個RS,再與相應的RS進行連接。

3、RS內部剖析

RS負責實際數據的讀寫,一個RS裏包含一個WAL與一個或多個Region。當數據量小的時候一個Region就可以存放所有數據,數據量大的時候RS就會拆分region,並通知HM將多個region分配到一個或多個RS中。

3.1  Region

有start key 和end key,這裏的Key就是row key,由start key和end key將HBase中的一個大表橫向切割成幾個子表,這些子表即爲region。同時region也是HBase中負載均衡的基本單元,當一個region增長到一定大小時,會自動分裂成兩個(region自帶分裂策略),一個表中的數據會被分到一個或多個region中進行存儲,而region又被HM分配到一個或多個RS中,且一個Region與一個column family確定唯一的cell,這個cell就是store。一個region裏有多個store。

3.2 Store

3.2.1 memstore

數據被寫入HLog後就被加載到MemStore,MS用於在內存中保存數據,MemStore到達某個閾值時會被刷寫到HDFS上,以HFile的形式被持久化起來。

3.2.2 HFile

HFile只有索引信息,真正的東西在HDFS的block中,一個block對應一個HFile。HFile相當於HDFS的客戶端。

在物理存儲上我們管memstore刷寫而成的文件叫HFile,storefile就是Hfile的抽象類而已。

 

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