下面來簡述一下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
喜歡的朋友點點關注