1)hregionserver儲存著
meta
表以及表資料,要訪問表資料,首先
client
先去訪問
zookeeper
,從zookeeper
裡面獲取
meta
表所在的位置資訊,即找到這個
meta
表在哪個
hregionserver
上儲存著
。2)接著client通過剛才獲取到的
hregionserver的ip
來訪問meta
表所在的
hregionserver
,從而讀取到
meta
,進而獲取到
meta
表中存放的元資料。
3)client通過元資料中儲存的資訊,訪問對應的
hregionserver
,然後掃瞄所在
hregionserver
的memstore
和storefile
來查詢資料。
4)最後hregionserver把查詢到的資料響應給
client
。1)client也是先訪問
zookeeper
,找到meta
表,並獲取
meta表資訊
。2)確定當前將要寫入的資料所對應的regionserver伺服器
和region。
3)client向該
regionserver
伺服器發起寫入資料請求,然後
regionserver
收到請求並響應。
4)client先把資料寫入到
hlog
,以防止資料丟失。
5)然後將資料寫入到memstore。
6)如果hlog和
memstore
均寫入成功,則這條資料寫入成功。在此過程中,如果
memstore
達到閾值,會把
memstore
中的資料
flush
到storefile
中。7)當storefile越來越多,會觸發
compact
合併操作,把過多的
storefile
合併成乙個大的
storefile
。當storefile
越來越大,
region
也會越來越大,達到閾值後,會觸發
split
操作,將
region
一分為二。
因為記憶體空間是有限的,所以說溢寫過程必定伴隨著大量的小檔案產生。
本文參考自:盡際
HBase 讀寫流程
1.讀流程 client先訪問zookeeper,從meta表讀取region的位置,然後讀取meta表中的資料。meta中又儲存了使用者表的region資訊 根據namespace 表名和rowkey在meta表中找到對應的region資訊 找到這個region對應的regionserver 查詢...
HBase讀寫流程
1 client先訪問zookeeper,從meta表讀取region的位置,然後讀取meta表中的資料。meta中又儲存了使用者表的region資訊 2 根據namespace 表名和rowkey在meta表中找到對應的region資訊 3 找到這個region對應的regionserver 4 ...
HBase讀寫流程
寫流程參考 1.首先,客戶端需要獲知其想要讀取的資訊的region的位置,這個時候,client訪問hbase上資料時並不需要hmaster參與 hmaster僅僅維護著table和region的元資料資訊,負載很低 只需要訪問zookeeper,從meta表獲取相應region資訊 位址和埠等 c...