Hbase讀寫資料的原理解析

2021-08-17 21:00:48 字數 1309 閱讀 9657

針對上圖的一些解釋:

這裡面資料分割槽(region)儲存是為了查詢方便(即因為是集群所以能充分利用磁碟的io性)。新增資料時,資料先進入hlog–預寫日誌(資料只能追加不能修改)《防止資料丟失》,資料在hlog寫完後再寫到記憶體中

hfile:認為是將資料進行序列化。

storefile:認為是乙個檔案。

dfs:呼叫hdfs的客戶端api來將資料傳到hdfs。

1、客戶端向hregionserver請求寫資料

2、hregionserver將資料先寫入hlog中。

3、hregionserver將資料後寫入memstore中。

4、當記憶體中的資料達到閾值64m的時候,將資料flush到硬碟中,並同時刪除記憶體和hlog中的歷史資料。

5、將硬碟中資料通過hfile來序列化,再將資料傳輸到hdfs進行儲存。並對hlog做乙個標記。

6、當hdfs中的資料塊達到4塊的時候,hmaster將資料載入到本地進行乙個合併(如果合併後資料的大小小於256m則當資料塊再次達到4塊時(包含小於256m的資料塊)將最新4塊資料塊再次進行合併,此時資料塊大於256m)。

7、若資料塊大於256m,則將資料重新拆分,將分配後的region重新分配給不同的hregionserver進行管理。

8、當hregionserver宕機後,將hregionserver上的hlog重新分配給不同的hregionserver進行載入(修改.meta檔案中關於資料所在server的資訊)。注意:hlog會同步到hdfs中。

1、通過zk來獲取root表在那個節點上,然後進一步通過-root表和-meta表來獲取最終的位置資訊。

2、資料從記憶體和硬碟合併後返回到客戶端。

ps:由上圖可看到,當客戶端在執行查詢語句的時候,會先到zk上尋找對應-root表(主要描述-meta表在**)的位置資訊(由此也知道zk在hbase中的作用),接下來根據-root表中資料進而找到對應的hregionserver,在對應的hregionserver上的-meta表(主要記載表的元資料資訊)中找到對應的table表在哪個hregionserver上,再到對應的hregionserver中查詢對應的資料。

Hbase 讀寫 原理

客戶端讀取資訊流程 1 client要讀取資訊,先查詢下client 端的cache中是否存在資料,如果存在,剛直接返回資料。如果不存在,則進入到zookeeper,查詢到裡面的相應資料存在的root表中的位址。2 blockcache 設計用於讀入記憶體頻繁訪問的資料,每個列族都有 3 通過資料存...

HBase資料讀寫

hbase寫資料架構圖 hbase寫過程如下 先將資料寫到wal中 wal存放在hdfs上 每次put delete操作的資料均追加到wal末端 持久化到wal之後,再寫到memstore中 兩者寫完返回ack客戶端。memstore其實是一種記憶體結構,乙個column family對應乙個mem...

HBase資料的讀寫流程

1 hbase資料寫入流程1 客戶端訪問zookeeeper,從meta表中得到寫入資料對應的region資訊和相應的region伺服器。2 客戶端訪問相應的region伺服器,把資料分別寫入hlog和memstore。memstore資料容量有限,當達到乙個閾值後,則把資料寫入磁碟檔案storef...