Hbase儲存相關

2021-09-11 15:36:11 字數 2262 閱讀 3514

hbase 的儲存機制:

region(區域):表上的一塊資料

store:邏輯上的列簇

memstore列簇緩衝區:儲存熱資料(最近瀏覽,更新等操作的資料)

region server的工作職責:

管理region 和 響應io請求

資料可靠性的體現:

1、如果乙個region server掛了 :

寫日誌 hlog()

乙個server只有乙個hlog,

對資料的操作 根據rowkey屬於哪個region就**到哪個rejoin日誌存放在hdfs中

處理方法:再起乙個regoin server繼承那個掛掉的rejoin server
2、新的region server的啟動過程:

向外宣告掛掉的regoin server的東西歸我繼承,io請求由我響應

已重新整理的資料存在hdfs上,未重新整理到磁碟的資料根據hlog的時間順序重新執行來載入

memstore裡的必然是最新的資料,如果沒找到就到hdfs中找(hlog)

memstore 的資料落地:

memstore寫到128m的時候就會落地

寫入hdfs,生成乙個hfile的檔案

寫在storefile中

hbase的路由機制:

region 的膨脹

region 的撕裂

rowkey 按照字典順序排序,所以資料的量會很大

當資料量達到10g 時, region server 會對 region 進行撕裂。

剛開始還是該 server 管理這兩個 region.

master 接到報告,進行負載均衡,重新分配 region 到其他 server 上。

查詢資料

memstore 生成的檔案那麼多,怎麼查詢資料?

如何在 hdfs 上找到檔案 01998 。還要注意版本號

boolmfilter 布隆過濾器(損耗正確率來提高速度),設定在列簇上,他會記錄檔案中儲存了多少rowkey,

資料的查詢機制(二級索引)

怎麼樣確定客戶端與哪個 region server 互動才能找到資料?

增加一層 —— meta 索引表 (位置在系統表裡邊)

meta 表記錄的內容:(哪個表,區間資訊,是哪個region ,屬於哪個regionserver等。。)

meta 表放在**由誰管理?

zookeeper 中有個節點 /hbase/meta

只有一層 meta 表時尋找資料檔案的過程:

例:get 000198

從 zk 查詢 meta表在**,從 meta表裡邊得到要去的 region 的資訊

二級索引(meta 和 root)

meta 表也會分給多個 region ,也儲存在不同的 region server 上

當 meta 表大於 10 g 時,也會撕裂,那還怎麼在尋找的時候使用?

設定一層 root ,他的資料量基本上可保證由乙個 region 來管理就足夠

在 zk 上有乙個節點記錄 root 的資訊

尋找資料位置的過程

1、到zk 上找 root表的位置 ,

2、跟 root 表互動,對region server 請求獲得 meta表的位置,即 在哪個 region上 .

3、查詢 meta 表,確定 rowkey 所在的 region 以及 region server 所在的位置。(到 meta 表,連線到後得到 region server 和 屬於哪個 region .)

4、跟資料所在的 region server 進行互動

5、region server** 請求給 region

6、在 region 中的 memstore 中查詢 判斷有沒有需要的資料資訊,若沒有,則與hdfs 互動,通過hdfs 的 api 讀取資料

7、返回結果,首先把結果寫入到 memstore

8、返回結果給客戶端

客戶端還會快取 rowkey 屬於哪個 region 和 region server 的資訊。在定址之前會先檢視快取,如果快取中沒有要找的資料檔案,再去執行以上定址過程。

如果快取中有資料檔案的位置資訊,則直接連線到該檔案的機器

會出現的問題:

region 發生撕裂後位置資訊的改變,使快取的位置資訊錯誤?

三次冗餘後執行以上定址過程。

region server掛掉怎麼辦?

三次冗餘。每次都會路由到位置中的機器中(rs)尋找。三次失敗後,正確找到後更改客戶端的快取。

總結:客戶端做 io 請求一共有6次機會。

HBase相關知識

一 hbase資料模型 二 hbase 物理模型 a.table 中所有的行都按照 row key 的字典序進行排列 b.table 在行的方向上分割為多個 region c.region 是按大小分割的,每個表開始只有乙個 region 隨著資料增多,region 不但增大。當增大到乙個閾值時,r...

HBase資料儲存

hbase的資料檔案都儲存在hdfs上,格式主要有兩種 hfile hbase中keyvalue資料的儲存格式,hfile是hadoop的二進位制檔案,實際上storefile就是對hfile做了輕量級的包裝,即storefile底層就是hfile hlog file hbase中wal write...

Hbase 儲存結構

store region中更小的儲存單元 memstore store中儲存資料的記憶體區域 storefile 每個store中記憶體重新整理出來的檔案就是storefile 2 邏輯結構 3 物理結構 4 儲存架構 整個hbase 中所有的資料都是按照rowkey順序排列的 查詢資料時可以根據r...