(1) client通過
zookeeper
的排程,向
regionserver
發出寫資料請求,在
region
中寫資料。
(2) 資料被寫入
region
的memstore
,直到memstore
達到預設閾值。
(3) memstore中的資料被
flush
成乙個storefile
。(4) 隨著
storefile
檔案的不斷增多,當其數量增長到一定閾值後,觸發
compact
合併操作,將多個
storefile
合併成乙個
storefile
,同時進行版本合併和資料刪除。
(5) storefiles通過不斷的
compact
合併操作,逐步形成越來越大的
storefile
。(6) 單個
storefile
大小超過一定閾值後,觸發
split
操作,把當前
region split成2
個新的region
。父region
會下線,新
split出的2
個子region
會被hmaster
分配到相應的
regionserver
上,使得原先1個
region
的壓力得以分流到2個
region
上。可以看出hbase只有增添資料,所有的更新和刪除操作都是在後續的
compact
歷程中舉行的,使得使用者的寫操作只要進入記憶體就可以立刻返回,實現了
hbase i/o
的高機能。
(1) client訪問
zookeeper
,查詢-root-
表,獲取
.meta.
表資訊。
(2) 從
.meta.
表查詢,獲取存放目標資料的
region
資訊,從而找到對應的
regionserver
。(3) 通過
regionserver
獲取需要查詢的資料。
(4) regionserver的記憶體分為
memstore
和blockcache
兩部分,
memstore
主要用於寫資料,
blockcache
主要用於讀資料。讀請求先到
memstore
中查資料,查不到就到
blockcache
中查,再查不到就會到
storefile
上讀,並把讀的結果放入
blockcache
。定址過程:client-->zookeeper-->-root-表
-->.meta.
表-->regionserver-->region-->client
hbase定址機制
Hbase定址機制
root 表結構 meta.行記錄結構 現在假設我們要從table2裡面查詢一條rowkey是rk10000的資料。那麼我們應該遵循以下步驟 1.從.meta.表裡面查詢哪個region包含這條資料。2.獲取管理這個region的regionserver位址。3.連線這個regionserver,查...
Hbase的讀寫定址過程
1.hbase的寫入流程 regionserver寫入wal檔案 在將操作寫入metastore之前,會將操作先寫入到wal檔案中。wal檔案的是順序儲存操作記錄的,所有每次新操作直接追加到regionserver對應的wal檔案尾部即可。regionserver寫入metastore 將操作寫入到...
HBase 讀寫流程
1.讀流程 client先訪問zookeeper,從meta表讀取region的位置,然後讀取meta表中的資料。meta中又儲存了使用者表的region資訊 根據namespace 表名和rowkey在meta表中找到對應的region資訊 找到這個region對應的regionserver 查詢...