Hbase寫資料流程詳解

2021-10-21 00:00:56 字數 843 閱讀 4727

客戶端client 通過zookeeper 獲知meta表所在的節點,又通過table和rowkey在meta表中找到 要進行操作的region的節點 進行傳送請求,請求先追加寫入wal日誌中,然後資料寫入到對應的memstore中 並在**進行排序

之後regionserver會返回ack進行核對。

meta表的位址 在 zookeeper的 根目錄下的 base 下的 meta-region-server中  人工檢視的話 是亂碼 然後是節點名稱和 hbase機器的埠   並會顯示是在master還是在regionserver上

client獲取位址後 就直接向這個節點傳送請求獲取meta表  節點返回meta表資料後

client會先進行快取 讓接下來使用快一點 同時通過 table和rowkey 在meta表中查詢 對應的rowkey應當在哪個regionserver中維護

meta表的結構儲存一般表的結構  依次記錄表名 + rowkey的起始位置 結束位置, region名稱 ,然後是列族info: 列名server  value是節點+port位址

client獲取之後向 該節點才開始請求命令  命令會先記錄在wal日誌中 然後資料才會寫到 memstore中 此時 節點就會返回ack給 客戶端 客戶端就可以發下乙個命令了

同時節點不會立馬刷寫到hdfs上 它會有幾個引數的限制

hbase寫資料的能力是比它讀資料的能力是強的。 因為讀資料 不僅讀快取還要讀硬碟 並且要合起來 但是也沒有特別慢

刷寫的引數設定

ack這個 類似於kafka的ack 以及hadoop寫資料的ack   都是讀到記憶體就開始返回ack而不是落盤

列族類似於hive的分割槽概念

刷寫流程 對於

HBase之寫資料流程

1.客戶端訪問zookeeper獲取hbase meta表所在的regionserver資訊。2.與對應regionserver通訊,獲取meta表,根據寫請求引數查詢出應寫入到哪個regionserver中的哪個region中,把該錶的region資訊和meta表的位置資訊儲存在客戶端本地meta...

HBase讀寫資料流程

hbase的系統表 hbase namespace 儲存了hbase中的所有namespace的資訊 hbase meta 儲存了hbase中所有的region的資訊,包括rowkey範圍,region所在的regionserver的位址。hbase meta 在zookeeper中,進入zooke...

HBase讀寫資料流程

客戶端現在要插入一條資料,rowkey r000001,這條資料應該寫入到table表中的那個region中呢?1 客戶端要連線zookeeper,從zk的 hbase 節點找到 hbase meta 表所在的regionserver host port 2 regionserver 掃瞄 hbas...