HBase讀寫數據的詳細流程及ROOT表/META表介紹


一、HBase讀數據流程

  1.Client訪問Zookeeper,從ZK獲取-ROOT-表的位置信息,通過訪問-ROOT-表獲取.META.表的位置,然后確定數據所在的HRegion位置;

  2.Client訪問HRegion所在的HRegionServer,通過HRegionServer獲取需要查找的數據;

  3.Client到HRegion的中去查找數據,首先到MemStore中查找,查到直接返回;查不到就去ClockCache中查找,查到直接返回;再查不到就去StoreFile中讀數據,把讀到的數據存入BlockCache中再返回Client。

  如圖:

二、HBase寫數據流程

  1.Client通過Zookeeper調度獲取表的元數據信息;

  2.Cilent通過rpc協議與RegionServer交互,通過-ROOT-表與.META.表找到對應的對應的Region;

  3.將數據寫入HLog日志中,如出現意外可以同通過HLog恢復信息;

  4.將數據寫入Region的MemStore中,當MemStore達到閾值開始溢寫,將其中的數據Flush成一個StoreFile;

  5.MemStore不斷生成新的StoreFile,當StoreFile的數量到達閾值后會出發Compact合並操作,將多個StoreFile合並成一個StoreFile;

  6.StoreFile文件會不斷增大,當達到閾值后會出發Split操作,把當前的Region且分為兩個新的Region。父Region會下線,兩個子Region會被HMaster分配到相應的RegionServer。

  圖略、自己腦補一哈把~~

*********************************************************************************************

補充:1.由讀寫數據的流程可以發現,Region中的內存分為兩塊:MemStore(負責寫數據)、BlockCache(負責讀數據),這是HBase的一大特點——讀寫分離,這也是HBase讀寫速度極快的原因之一;

     2.在HBase中,可以看出只有增添操作,所有的更新和刪除都是在后續的Compact合並歷程中進行的,這使得用戶的寫操作只有進入內存就可以立刻返回,實現了I/O的高性能。

*********************************************************************************************

    

 

三、-ROOT-表和.META.表的介紹

  HBase用-ROOT-表記錄.META.表的位置信息(即元數據信息),而.META.表記錄了用戶表Region的位置信息。

  為了定位.META.表中各個Region的位置信息,把.META.表中所有Region的元數據保存在-ROOT-表中,最后由Zookeeper記錄-Root-表的位置信息。

  所以客戶端Client要先訪問ZK獲取-ROOT-表的位置,然后訪問-ROOT-表獲取.META.表的位置,最后根據.META.表中的信息確定用戶數據存放的位置。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM