尚硅谷大數(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。