大家好,我是不溫蔔火,是一名計算機學院大資料專業大二的學生,昵稱來源于成語—<code>不溫不火</code>,本意是<code>希望自己性情溫和</code>。作為一名網際網路行業的小白,部落客寫部落格一方面是為了記錄自己的學習過程,另一方面是總結自己所犯的錯誤希望能夠幫助到很多和自己一樣處于起步階段的萌新。但由于水準有限,部落格中難免會有一些錯誤出現,有纰漏之處懇請各位大佬不吝賜教!暫時隻有csdn這一個平台
此篇為大家帶來的是Hbase原理。
一. HBase的資料讀取流程
二. RegionServer 架構
二. HBase的資料的寫入流程
三. 資料Flush過程
四. 資料合并過程

如果上圖過程不是很懂,下面部落客再制作一幅圖供大家了解
1.Client先通路zookeeper,從meta表讀取region的位置,然後讀取meta表中的資料。meta中又存儲了使用者表的region資訊;
2.根據namespace、表名和rowkey在meta表中找到對應的region資訊;
3.找到這個region對應的regionserver;
4.查找對應的region;
5.先從MemStore找資料,如果沒有,再到BlockCache裡面讀;
6.BlockCache還沒有,再到StoreFile上讀(為了讀取的效率);
7.<code>如果是從StoreFile裡面讀取的資料,不是直接傳回給用戶端,而是先寫入BlockCache,再傳回給用戶端</code>。
1.StoreFile
儲存實際資料的實體檔案,StoreFile以Hfile的形式存儲在HDFS上。每個Store會有一個或多個StoreFile(HFile),資料在每個StoreFile中都是有序的。
2.MemStore
寫緩存,由于HFile中的資料要求是有序的,是以資料是先存儲在MemStore中,排好序後,等到達刷寫時機才會刷寫到HFile,每次刷寫都會形成一個新的HFile。
3.WAL
由于資料要經MemStore排序後才能刷寫到HFile,但把資料儲存在記憶體中會有很高的機率導緻資料丢失,為了解決這個問題,資料會先寫在一個叫做Write-Ahead logfile的檔案中,然後再寫入MemStore中。是以在系統出現故障的時候,資料可以通過這個日志檔案重建。
4.BlockCache
讀緩存,每次查詢出的資料會緩存在BlockCache中,友善下次查詢。
1.Client向HregionServer發送寫請求;
2.HregionServer将資料寫到HLog(write ahead log)。為了資料的持久化和恢複;
3.HregionServer将資料寫到記憶體(MemStore);
4.回報Client寫成功。
1.當MemStore資料達到門檻值(預設是128M,老版本是64M),将資料刷到硬碟,将記憶體中的資料删除,同時删除HLog中的曆史資料;
2.并将資料存儲到HDFS中;
3.在HLog中做标記點。
1.當資料塊達到4塊,Hmaster觸發合并操作,Region将資料塊加載到本地,進行合并;
2.當合并的資料超過256M,進行拆分,将拆分後的Region配置設定給不同的HregionServer管理;
3.當HregionServer當機後,将HregionServer上的hlog拆分,然後配置設定給不同的HregionServer加載,修改.META.;
4.注意:HLog會同步到HDFS。
本次的分享就到這裡了,
好書不厭讀百回,熟讀課思子自知。而我想要成為全場最靓的仔,就必須堅持通過學習來擷取更多知識,用知識改變命運,用部落格見證成長,用行動證明我在努力。 如果我的部落格對你有幫助、如果你喜歡我的部落格内容,聽說點贊的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我部落格看看。 碼字不易,大家的支援就是我堅持下去的動力。