elasticsearch入門系列">elasticsearch入門系列
724
2022-05-29
大家好,我是不溫卜火,是一名計算機學院大數據專業(yè)大二的學生,昵稱來源于成語—不溫不火,本意是希望自己性情溫和。作為一名互聯網行業(yè)的小白,博主寫博客一方面是為了記錄自己的學習過程,另一方面是總結自己所犯的錯誤希望能夠幫助到很多和自己一樣處于起步階段的萌新。但由于水平有限,博客中難免會有一些錯誤出現,有紕漏之處懇請各位大佬不吝賜教!暫時只有csdn這一個平臺,博客主頁:https://buwenbuhuo.blog.csdn.net/
此篇為大家?guī)淼氖荋base原理。
目錄
一. HBase的數據讀取流程
二. RegionServer 架構
二. HBase的數據的寫入流程
三. 數據Flush過程
四. 數據合并過程
一. HBase的數據讀取流程
如果上圖過程不是很懂,下面博主再制作一幅圖供大家理解
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.如果是從StoreFile里面讀取的數據,不是直接返回給客戶端,而是先寫入BlockCache,再返回給客戶端。
二. RegionServer 架構
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中,方便下次查詢。
二. HBase的數據的寫入流程
如果上圖過程不是很懂,下面博主再制作一幅圖供大家理解
1.Client向HregionServer發(fā)送寫請求;
2.HregionServer將數據寫到HLog(write ahead log)。為了數據的持久化和恢復;
3.HregionServer將數據寫到內存(MemStore);
4.反饋Client寫成功。
三. 數據Flush過程
1.當MemStore數據達到閾值(默認是128M,老版本是64M),將數據刷到硬盤,將內存中的數據刪除,同時刪除HLog中的歷史數據;
2.并將數據存儲到HDFS中;
3.在HLog中做標記點。
四. 數據合并過程
1.當數據塊達到4塊,Hmaster觸發(fā)合并操作,Region將數據塊加載到本地,進行合并;
2.當合并的數據超過256M,進行拆分,將拆分后的Region分配給不同的HregionServer管理;
3.當HregionServer宕機后,將HregionServer上的hlog拆分,然后分配給不同的HregionServer加載,修改.META.;
4.注意:HLog會同步到HDFS。
本次的分享就到這里了,
好書不厭讀百回,熟讀課思子自知。而我想要成為全場最靚的仔,就必須堅持通過學習來獲取更多知識,用知識改變命運,用博客見證成長,用行動證明我在努力。
如果我的博客對你有幫助、如果你喜歡我的博客內容,請“” “評論”“”一鍵三連哦!聽說的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。
碼字不易,大家的支持就是我堅持下去的動力。后不要忘了關注我哦!
HBase
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。