hbase寫數據 和 讀數據過程


一:獲取region存儲位置信息

寫數據和讀數據一般都會獲取hbase的region的位置信息。大概步驟為:

1- 從zookeeper中獲取.ROOT.表的位置信息,在zookeeper的存儲位置為/hbase/root-region-server;

2- 根據.ROOT.表中信息,獲取.META.表的位置信息;

3- .META.表中存儲的數據為每一個region存儲位置;

 

二: 向hbase表中插入數據

hbase中緩存分為兩層:memstore和blockcache。

1- 首先寫入到WAL文件中,目的是為了數據不丟失;

2- 再把數據插入到memstore緩存中,當memstore達到設置大小閾值時,會進行flush進程;

3- flush過程中,需要獲取每一個region存儲的位置。

 

三:從hbase中讀取數據

 blockcache主要提供給讀使用。讀請求先到memstore中查數據,查不到就到blockcache中查,再查不到就會到磁盤上讀,並把讀的結果放入blockcache。

blockcache采用的算法為LRU(最近最少使用算法),因此當blockcache達到上限后,會啟動淘汰機制,淘汰掉最老的一批數據。

   一個regionserver上有一個blockcache和N個memstore,它們的大小之和不能大於等於heapsize * 0.8,否則hbase不能啟動。默認blockcache為0.2,而memstore為0.4。對於注重讀響應時間的系統,應該將blockcache設大些,比如設置blockcache=0.4,memstore=0.39。這會加大緩存命中率。


免責聲明!

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



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