1. 程式人生 > >Hbase讀寫流程和定址機制

Hbase讀寫流程和定址機制

寫操作流程

(1) Client通過Zookeeper的排程,向RegionServer發出寫資料請求,在Region中寫資料。

(2) 資料被寫入RegionMemStore,直到MemStore達到預設閾值。

(3) MemStore中的資料被Flush成一個StoreFile

(4) 隨著StoreFile檔案的不斷增多,當其數量增長到一定閾值後,觸發Compact合併操作,將多個StoreFile合併成一個StoreFile,同時進行版本合併和資料刪除。

(5) StoreFiles通過不斷的Compact合併操作,逐步形成越來越大的StoreFile

(6) 單個StoreFile

大小超過一定閾值後,觸發Split操作,把當前Region Split2個新的Region。父Region會下線,新Split出的2個子Region會被HMaster分配到相應的RegionServer上,使得原先1Region的壓力得以分流到2Region上。

可以看出HBase只有增添資料,所有的更新和刪除操作都是在後續的Compact歷程中舉行的,使得使用者的寫操作只要進入記憶體就可以立刻返回,實現了HBase I/O的高機能

讀操作流程

(1) Client訪問Zookeeper,查詢-ROOT-表,獲取.META.表資訊。

(2) .META.表查詢,獲取存放目標資料的

Region資訊,從而找到對應的RegionServer

(3) 通過RegionServer獲取需要查詢的資料。

(4) Regionserver的記憶體分為MemStoreBlockCache兩部分,MemStore主要用於寫資料,BlockCache主要用於讀資料。讀請求先到MemStore中查資料,查不到就到BlockCache中查,再查不到就會到StoreFile上讀,並把讀的結果放入BlockCache

定址過程:client-->Zookeeper-->-ROOT--->.META.-->RegionServer-->Region-->client

Hbase定址機制