尚硅谷大數據技術之HBase第6章 HBase原理
6.1 寫流程
1)Client向HregionServer發送寫請求;
2)HregionServer將數據寫到HLog(write ahead log)。為了數據的持久化和恢復;
3)HregionServer將數據寫到內存(MemStore);
4)反饋Client寫成功。
6.2 數據flush過程
1)當MemStore數據達到閾值(默認是128M,老版本是64M),將數據刷到硬盤,將內存中的數據刪除,同時刪除HLog中的歷史數據;
2)并將數據存儲到HDFS中;
3)在HLog中做標記點。
6.3 數據合并過程
1)當數據塊達到4塊,Hmaster將數據塊加載到本地,進行合并;
2)當合并的數據超過256M,進行拆分,將拆分后的Region分配給不同的HregionServer管理;
3)當HregionServer宕機后,將HregionServer上的hlog拆分,然后分配給不同的HregionServer加載,修改.META;
4)注意:HLog會同步到HDFS。
6.4 讀流程
1)Client先訪問zookeeper,從meta表讀取region的位置,然后讀取meta表中的數據。meta中又存儲了用戶表的region信息;
2)根據namespace、表名和rowkey在meta表中找到對應的region信息;
3)找到這個region對應的regionserver;
4)查找對應的region;
5)先從MemStore找數據,如果沒有,再到StoreFile上讀(為了讀取的效率)。
6.5 Hmaster的職責
1)管理用戶對Table的增、刪、改、查操作;
2)記錄region在哪臺Hregion server上;
3)在Region Split后,負責新Region的分配;
4)新機器加入時,管理HRegion Server的負載均衡,調整Region分布;
5)在HRegion Server宕機后,負責失效HRegion Server 上的Regions遷移。
6.6 Hregionserver的職責
1)HRegion Server主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據,是HBASE中最核心的模塊。
2)HRegion Server管理了很多table的分區,也就是region。
6.7 Client職責
1)HBASE Client使用HBASE的RPC機制與HMaster和RegionServer進行通信
2)管理類操作:Client與HMaster進行RPC;
3)數據讀寫類操作:Client與HRegionServer進行RPC。