HBase讀寫流程

2021-10-01 09:26:45 字數 1197 閱讀 7200

一、hbase讀資料流程

hbase的regionserver的記憶體memstore,block cache。memstore作業主要是寫,另一部分主要是讀的。block cache用的是least recently used(lru),如果block cache達到上限,會啟動淘汰機制。

hregionserver儲存著.meta.的這樣一張表以及表資料,要訪問表資料,首先client先去訪問zookeeper,從zookeeper裡面找到.meta.表所在的位置資訊,即找到這個.meta.表在哪個hregionserver上儲存著。

接著client通過剛才獲取到的hregionserver的ip來訪問.meta.表所在的hregionserver,從而讀取到.meta.,進而獲取到.meta.表中存放的元資料。

client通過元資料中儲存的資訊,訪問對應的hregionserver,然後掃瞄(scan)所在hregionserver的memstore如果沒有,掃瞄block cache(讀資料的快取),如果還沒有去storefile來查詢資料,查到資料之後將資料讀到block cache。

最後hregionserver把查詢到的資料響應給client。

二、hbase寫資料流程

client也是先訪問zookeeper,進而找到.meta.表,並獲取.meta.表資訊。

確定當前將要寫入的資料所對應的regionserver伺服器和region。

client向該regionserver伺服器發起寫入資料請求,然後regionserver收到請求並響應。

client先把資料寫入到hlog,以防止資料丟失。

然後將資料寫入到memstore。

如果hlog和memstore均寫入成功,則這條資料寫入成功。在此過程中,如果memstore達到閾值,會把memstore中的資料flush到storefile中。

當storefile越來越多,會觸發compact合併操作,把過多的storefile合併成乙個大的storefile。當storefile越來越大,region也會越來越大,達到閾值後,會觸發split操作,將region一分為二。

尖叫提示:因為記憶體空間是有限的,所以說溢寫過程必定伴隨著大量的小檔案產生。

————保持學習,保持飢餓

jackson_mvp

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...