hbase的整體架構分析

HBase的功能非常強大,下面是我對於HBase的一些理解,歡迎指點。

HBaseApache Hadoop的數據庫,能夠對大型數據提供隨機、實時的讀寫訪問。HBase的目標是存儲並處理大型的數據。HBase是一個開源的,分佈式的,多版本的,面向列的存儲模型。它存儲的是鬆散型數據。

Region

1. Table隨着記錄增多不斷變大,會自動分裂成多份Splits,成爲Regions
2. 
一個region[startkeyendkey)表示
3. 
不同region會被Master分配給相應的RegionServer進行管理


兩張特殊表:-ROOT- & .META.

對於HBase中table的讀取,採用三級尋址


.META.   記錄用戶表的Region信息,同時,.META.也可以有多個region
-ROOT-
 記錄.META.表的Region信息,但是,-ROOT-只有一個region
Zookeeper
中記錄了-ROOT-表的location
客戶端訪問數據的流程:
Client -> Zookeeper -> -ROOT- -> .META. ->
用戶數據表
多次網絡操作,不過client端有cache緩存

HBase 系統架構

組成部件說明


Client

使用HBase RPC機制與HMasterHRegionServer進行通信
Client
HMaster進行通信進行管理類操作
Client
HRegionServer進行數據讀寫類操作

Zookeeper

Zookeeper Quorum
存儲-ROOT-表地址、HMaster地址
HRegionServer
把自己以Ephedral方式註冊到Zookeeper中,HMaster隨時感知各個HRegionServer的健康狀況
Zookeeper
避免HMaster單點問題

HMaster

HMaster
沒有單點問題,HBase中可以啓動多個HMaster,通過ZookeeperMaster Election機制保證總有一個Master在運行
主要負責TableRegion的管理工作:
1
管理用戶對錶的增刪改查操作
2
管理HRegionServer的負載均衡,調整Region分佈
3 Region Split
後,負責新Region的分佈
4
HRegionServer停機後,負責失效HRegionServerRegion遷移

HRegionServer

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


HRegionServer管理一些列HRegion對象;

每個HRegion對應Table中一個RegionHRegion由多個HStore組成;
每個HStore對應Table中一個Column Family的存儲;
Column Family
就是一個集中的存儲單元,故將具有相同IO特性的Column放在一個Column Family會更高效

HStore
HBase
存儲的核心。由MemStoreStoreFile組成。
MemStore
SortedMemory Buffer。用戶寫入數據的流程:


Client寫入 ->存入MemStore,一直到MemStore滿 -> Flush成一個StoreFile,直至增長到一定閾值 ->出發Compact合併操作 ->多個StoreFile合併成一個StoreFile,同時進行版本合併和數據刪除 ->StoreFiles Compact後,逐步形成越來越大的StoreFile ->單個StoreFile大小超過一定閾值後,觸發Split操作,把當前Region Split2RegionRegion會下線,新Split出的2個孩子Region會被HMaster分配到相應的HRegionServer上,使得原先1Region的壓力得以分流到2Region
由此過程可知,HBase只是增加數據,有所得更新和刪除操作,都是在Compact階段做的,所以,用戶寫操作只需要進入到內存即可立即返回,從而保證I/O高性能。


下面是HBase的整體架構圖:


這張整體架構圖總的來說沒有什麼問題,很完整的展示了Client往HBase中存儲和讀取數據的過程,但是有一個細節問題需要注意,就是HLOG是針對於HTable 的,並不是每一個region都有一個hlog,這一點需要注意。


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