HBase 的讀寫過程

2021-10-25 17:49:59 字數 2444 閱讀 3785

一、hbase的讀操作:

zookeeper—meta–regionserver–region–memstore–storefile

1、首先從zookerper找到meta表的region的位置,然後讀取meta表中的資料。而meta中又儲存了使用者表的region資訊

2、根據namespace、表名和rowkey根據meta表中的資料找到寫入資料對於的region資訊

3、然後找到對於的regionserver

4、查詢對應的region

5、先從memstore找資料,如果沒有,再到storefile上讀

二、hbase的寫操作:

zookeeper—meta–regionserver–1、hlog 1、memstore–storefile

1、首先從zookerper找到meta表的region的位置,然後讀取meta表中的資料。而meta中又儲存了使用者表的region資訊

2、根據namespace、表名和rowkey根據meta表中的資料找到寫入資料對於的region資訊

3、然後找到對於的regionserver

4、把資料分別寫到hlog和memstore各乙份

4、1當memstore達到閾值後把資料刷成乙個storefile檔案,當compact後,逐漸形成越來越大的storefile後觸發spilt,

把當前的storefile分成兩個,這裡相當於把乙個大的region分割成兩個region

4、1若memstore中的資料有丟失,則可以從hlog上恢復,當多個storefile檔案達到一定的大小後,會觸發compact合併操作,

合併為乙個storefile,這裡同時進行版本的合併和資料刪除

下面對hbase架構進行分析

架構分析

1、hmaster

負責管理hbase元資料,即表的結構、表儲存的region等元資訊。

負責表的建立,刪除和修改(因為這些操作會導致hbase元資料的變動)。

負責為hregionserver分配region,分配好後也會將元資料寫入相應位置(後面會詳細講述放在哪)。

如果對可用性要求較高,它需要做ha高可用(通過zookeeper)。但是hmaster不會去處理client端的資料讀寫請求,因為這樣會加大其負載壓力,具體的讀寫請求它會交給hregionserver來做。

2、hregionserver

乙個regionserver裡有多個region。

處理client端的讀寫請求(根據從hmaster返回的元資料找到對應的region來讀寫資料)。

管理region的split**、storefile的compaction合併。

乙個regionserver管理著多個region,在hbase執行期間,可以動態新增、刪除hregionserver。

3、hregion

乙個hregion裡可能有1個或多個store。

hregionserver維護乙個hlog。

hregion是分布式儲存和負載的最小單元。

表通常被儲存在多個hregionserver的多個region中。

因為hbase用於儲存海量資料,故一張表中資料量非常之大,單機一般存不下這麼大的資料,故hbase會將一張表按照行水平將大表劃分為多個region,每個region儲存表的一段連續資料。 初始只有1個region,當乙個region增大到某個閾值後,便分割為兩個。

4、store

store是儲存落盤的最小單元,由記憶體中的memstore和磁碟中的若干storefile組成。

乙個store裡有1個或多個storefile和乙個memstore。

每個store儲存乙個列族

storefile合併(compaction)

目的:減少storefile數量,提公升資料讀取效率。

compaction分為兩種:

major compaction

將store下面所有storefile合併為乙個storefile,此操作會刪除其他版本的資料(不同時間戳的)

minor compaction

選取store下的部分storefile,將它們合併為乙個storefile,此操作不會刪除其他版本資料。

region分割(split)

目的:實現資料訪問的負載均衡。

做法:利用middle key將當前region劃分為兩個等分的子region。需要指出的是:split會產生大量的i/o操作,split開始前和split完成後,hregionserver都會通知hmaster。split完成後,由於region對映關係已變更,故hregionserver會更新meta表。

Hbase讀寫過程

補充 布隆過濾器引數型別有2種 row row col 細節描述 hbase使用memstore和storefile儲存對錶的更新。資料在更新時首先寫入log wal log 和記憶體 memstore 中,memstore中的資料是排序的,當memstore累計到一定閾值時,就會建立乙個新的mem...

(四)hbase讀寫過程

寫入資料的過程 通過行鍵 哪個region regionserver region 通過列族 region中某個store 先向hlog裡插入操作記錄 把資料直接放入 memstore 返回寫入成功 後台去把memstore的資料flush到storefile 寫入資料的思想 找到具體的storef...

Hbase結構和讀寫過程

1 hbase寫如過程圖 於網路 2 hbase的結構 master hbase master用於協調多個region server,偵測各個regionserver之間的狀態,並平衡regionserver之間的負載,並且分配region給regionserver。region server 乙個...