HBase 的讀寫流程

2021-10-05 20:53:12 字數 1262 閱讀 1182

一、建表的請求是通過rpc的方式由client傳送到master。(建表時應該定義合理的schema,設定合理的region數量 —— 預分割槽,通過預先建立一些空的region,這樣當資料寫入hbase時,會按照region分割槽情況,在集群內做資料的負載均衡,加快批量寫入速度。)

二、master側接收到client側的建表請求以後,一些主要操作包括:

1、 生成每乙個region的描述資訊物件hregioninfo,這些描述資訊包括:region id, region名稱,key範圍,表名稱等資訊。

2、 生成每乙個region在hdfs中的檔案目錄。

3、將hregioninfo資訊寫入到記錄元資料的hbase:meta表(儲存了所有使用者hregion的位置資訊,儲存在zookeepe)中。

三、新建立的regions由region assignmentmanager負責分配到各個regionserver,具體的分配計畫是由loadbalancer來提供的。

1) 客戶端訪問 zookeeper,從 meta 表得到寫入資料對應的 region 資訊和相應 的region 伺服器。

2) 客戶端訪問相應的 region 伺服器,把資料分別寫入 hlog(wal) 和 memstore。memstore 資料容量有限,當達到乙個閾值後,則把資料寫入磁碟檔案 storefile 中,在 hlog 檔案中寫入乙個標記,表示 memstore 快取中的資料已被寫入 storefile 中。如果 memstore 中的資料丟失,則可以從 hlog 上恢復。

3) 當多個 storefile 檔案達到閾值後,會觸發 store.compact() 將多個 storefile 檔案合併為乙個 大檔案。

1) 客戶端訪問zookeeper獲取meta表(主要記錄表的元資訊),然後從meta表中獲取想要操作的region位置,並將meta快取在客戶端,用於後續的操作(避免每次讀寫都要去訪問zookeeper或者meta region,當乙個regionserver宕機後,客戶端需要重新獲取meta資訊進行快取)

2) 客戶端向對應regionserver建立連線並傳送讀取資料的請求,region接收請求後,先從 memstore 查詢資料,如果查不到就會到blockcache中查,如果再查不到,就會到磁碟中 storefile 上讀取,然後將資料返回給客戶端。

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