中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase文件索引有什么用

發布時間:2021-12-08 13:53:13 來源:億速云 閱讀:115 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關HBase文件索引有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

HBase總體結構圖

 HBase文件索引有什么用

 

部分術語簡介

HMaster

負責管理HRegionServer的接入,負責Region的管理分配,負責管理Table的創建于刪除修改等操作。

HRegion

每個Table可以分裂成多個Region,每個Region為Table中的一個行區間。例如RowKey為0-100的Table,可以分裂成0-50以及51-100這兩個Region。

HRegionServer

每個HRegionServer管理著多個Region,負責對Region的讀寫操作等

HLog

每個HRegionServer都有一個HLog用來記錄所有操作,主要用于數據損壞時修復數據。物理上是Hadoop的Sequence File

Store

每個HRegion下管理著多個Store,每個Store對應Table中的一個Family進行數據管理

StoreFile

Family的持久化數據類

MemStore

每個Store中都有一個MemStore,用來緩存對Family的操作,當MemStore緩存到一點大小之后,將會轉換成StoreFile Flush到HDFS中

HFile

StoreFile只是HFile的輕量級封裝,HDFS中保存的Table數據文件都是HFile格式

 

索引的總體結構

在HBase中,從整個大框架上來看,索引的分布分為以下幾層。

HBase文件索引有什么用 

A、在Zookeeper中,根據HMaster的啟動,保存著分配了-ROOT- Table的RegionServer的地址。

B、在-ROOT- Table中,保存著.META Table split成多個region后所分布在的RegionServers的信息。

C、在.META中,保存著各個Table的regions所分布的RegionServers地址。

D、-ROOT-只存在一個Region,而.META是可以split成多個的。

-ROOT- 與 META的表結構是一樣的,如下

Rowkey

info



Regioninfo

server

serverstartcode


TableName

StartKey

TimeStamp

Startkey

Endkey

family list

address

加載當前分片的啟動時間

-ROOT-示例:

假設.META分裂成了兩個Region,分布在了兩個RegionServer上

Rowkey

Info




Regioninfo

Server

serverstarcode

.META Table1

pk0

12345278


RegionServer1


.META Table1

pk1000

123451278


RegionServer2


.META Table2

pk0

123431278


RegionServer1


.META Table2

pk1000

123457278


RegionServer2


 HBase文件索引有什么用

.META的示例:

Rowkey

Info




Regioninfo

Server

serverstarcode

Table1

pk0

12345278


RegionServer1


Table1

pk1000

123451278


RegionServer2


Table1

pk2000

12345878


RegionServer3


……

……

……

……

Table2

pk0

12345278


RegionServer1


Table2

pk1000

12345478


RegionServer2


Table2

pk2000

12345778


RegionServer3


 HBase文件索引有什么用

RegionServer的定位過程

  當Client要對一個Table中的數據進行put、get、delete操作時,提供了TableName以及RowKey時,Client從Zookeeper中獲取到-ROOT-的RegionServer信息,然后從-ROOT-中根據RowKey獲取到.META的ReginoServer,從而再定位到RowKey所在的RegionServer中。由于Client在交互過程中會緩存-ROOT-、.META、Region等位置信息,在最優情況下只需要查詢一次位置,在最壞情況下是需要6次[ 需要從Table Region遞歸回去查詢 ]。

HFile的數據存儲結構:

 HBase文件索引有什么用

  如上圖,HFile的文件長度為變長,其中的File Info以及Trailer是定長,Trailer中有指向File Info\Data Index\Meta Index的起始點。Index數據塊記錄著Data\Meta塊的起始點。在Data數據塊中,Magic是用來辨別數據是否損壞的,每個Data塊中保存著多個KeyValue信息。

 HBase文件索引有什么用

上圖為KeyValue的數據結構

 HBase文件索引有什么用

上圖也為HFile的數據結構

整個的region文件路徑就是如下形式:

/<hbase-root-dir>/<tablename>/<encoded-regionname>/<column-family>/<filename>

每個column-family下的一個個HFile數據文件,文件的名字是基于Java內建的隨機數生成器產生的任意數字。代碼會保證不會產生碰撞,比如當發現新生成的數字已經存在時,它會繼續尋找一個未被使用的數字。

Region的操作

  當定位到RowKey所在的RegionServer之后,就能根據RegionName來獲取到相對應的Region,RegionName來自.META中保存的RowKey。

Get:

1、HRegion.get接口會先對Family做檢測,保證Get中的Family與Table中的保持一致。

2、根據Family的信息,找出對應的Store,并獲取到Store中的StoreScanner實例,并將其添加到一個scanners隊列中。

3、在StoreScanner中,又有MemstoreScanner和HFileScanner兩個實例,分別用來遍歷MemStore與HFile中的keyValue值的。

4、因為存在多個HFile,因此會對HFileScanner會做一次過濾選擇,通過HFile的DataIndex將position指向StarRow,DataIndex中是保存有當前DataBlock的firstKey信息的,如果KeyValue不在當前HFile中,將關閉HFileScanner的查找。

5、需要注意的是,在RegionServer啟動之后,HFile的DataIndex是保存在內存中的。

6、當StoreScanner查詢相應的keyValue時,先利用MemstoreScanner從MemStore中查找,如果沒有相應數據,再利用HFileScanner從HFile的DataBlock中遍歷,DataIndex能快速定位Block所在的位置。

7、由于HFile已經被持久化到HDFS中,對HFile的每次IO讀取,都只是讀取一個Data數據塊的大小,Data的位置可以根據HFile的DataIndex信息來查詢。

8、如果有配置使用Bloom Filters,將能快速確認一個RowKey或者value是否在一個HFile中。

關于“HBase文件索引有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆昌县| 扎兰屯市| 新泰市| 来凤县| 鹤岗市| 鹤山市| 科技| 肇庆市| 南部县| 崇信县| 宝清县| 益阳市| 云阳县| 中宁县| 治多县| 灵丘县| 慈溪市| 井研县| 毕节市| 山阳县| 蒙自县| 拉孜县| 潼南县| 黄石市| 农安县| 九台市| 清水县| 双桥区| 齐河县| 轮台县| 郴州市| 繁峙县| 镇原县| 林西县| 宜阳县| 都匀市| 高平市| 莒南县| 工布江达县| 乐平市| 焦作市|