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