欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

HBase文件索引有什么用

這篇文章將為大家詳細(xì)講解有關(guān)HBase文件索引有什么用,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、重慶App定制開(kāi)發(fā)重慶小程序開(kāi)發(fā)、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來(lái)大量新的創(chuàng)意。 

HBase總體結(jié)構(gòu)圖

 HBase文件索引有什么用

 

部分術(shù)語(yǔ)簡(jiǎn)介

HMaster

負(fù)責(zé)管理HRegionServer的接入,負(fù)責(zé)Region的管理分配,負(fù)責(zé)管理Table的創(chuàng)建于刪除修改等操作。

HRegion

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

HRegionServer

每個(gè)HRegionServer管理著多個(gè)Region,負(fù)責(zé)對(duì)Region的讀寫操作等

HLog

每個(gè)HRegionServer都有一個(gè)HLog用來(lái)記錄所有操作,主要用于數(shù)據(jù)損壞時(shí)修復(fù)數(shù)據(jù)。物理上是Hadoop的Sequence File

Store

每個(gè)HRegion下管理著多個(gè)Store,每個(gè)Store對(duì)應(yīng)Table中的一個(gè)Family進(jìn)行數(shù)據(jù)管理

StoreFile

Family的持久化數(shù)據(jù)類

MemStore

每個(gè)Store中都有一個(gè)MemStore,用來(lái)緩存對(duì)Family的操作,當(dāng)MemStore緩存到一點(diǎn)大小之后,將會(huì)轉(zhuǎn)換成StoreFile Flush到HDFS中

HFile

StoreFile只是HFile的輕量級(jí)封裝,HDFS中保存的Table數(shù)據(jù)文件都是HFile格式

 

索引的總體結(jié)構(gòu)

在HBase中,從整個(gè)大框架上來(lái)看,索引的分布分為以下幾層。

HBase文件索引有什么用 

A、在Zookeeper中,根據(jù)HMaster的啟動(dòng),保存著分配了-ROOT- Table的RegionServer的地址。

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

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

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

-ROOT- 與 META的表結(jié)構(gòu)是一樣的,如下

Rowkey

info



Regioninfo

server

serverstartcode


TableName

StartKey

TimeStamp

Startkey

Endkey

family list

address

加載當(dāng)前分片的啟動(dòng)時(shí)間

-ROOT-示例:

假設(shè).META分裂成了兩個(gè)Region,分布在了兩個(gè)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的定位過(guò)程

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

HFile的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu):

 HBase文件索引有什么用

如上圖,HFile的文件長(zhǎng)度為變長(zhǎng),其中的File Info以及Trailer是定長(zhǎng),Trailer中有指向File Info\Data Index\Meta Index的起始點(diǎn)。Index數(shù)據(jù)塊記錄著Data\Meta塊的起始點(diǎn)。在Data數(shù)據(jù)塊中,Magic是用來(lái)辨別數(shù)據(jù)是否損壞的,每個(gè)Data塊中保存著多個(gè)KeyValue信息。

 HBase文件索引有什么用

上圖為KeyValue的數(shù)據(jù)結(jié)構(gòu)

 HBase文件索引有什么用

上圖也為HFile的數(shù)據(jù)結(jié)構(gòu)

整個(gè)的region文件路徑就是如下形式:

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

每個(gè)column-family下的一個(gè)個(gè)HFile數(shù)據(jù)文件,文件的名字是基于Java內(nèi)建的隨機(jī)數(shù)生成器產(chǎn)生的任意數(shù)字。代碼會(huì)保證不會(huì)產(chǎn)生碰撞,比如當(dāng)發(fā)現(xiàn)新生成的數(shù)字已經(jīng)存在時(shí),它會(huì)繼續(xù)尋找一個(gè)未被使用的數(shù)字。

Region的操作

當(dāng)定位到RowKey所在的RegionServer之后,就能根據(jù)RegionName來(lái)獲取到相對(duì)應(yīng)的Region,RegionName來(lái)自.META中保存的RowKey。

Get:

1、HRegion.get接口會(huì)先對(duì)Family做檢測(cè),保證Get中的Family與Table中的保持一致。

2、根據(jù)Family的信息,找出對(duì)應(yīng)的Store,并獲取到Store中的StoreScanner實(shí)例,并將其添加到一個(gè)scanners隊(duì)列中。

3、在StoreScanner中,又有MemstoreScanner和HFileScanner兩個(gè)實(shí)例,分別用來(lái)遍歷MemStore與HFile中的keyValue值的。

4、因?yàn)榇嬖诙鄠€(gè)HFile,因此會(huì)對(duì)HFileScanner會(huì)做一次過(guò)濾選擇,通過(guò)HFile的DataIndex將position指向StarRow,DataIndex中是保存有當(dāng)前DataBlock的firstKey信息的,如果KeyValue不在當(dāng)前HFile中,將關(guān)閉HFileScanner的查找。

5、需要注意的是,在RegionServer啟動(dòng)之后,HFile的DataIndex是保存在內(nèi)存中的。

6、當(dāng)StoreScanner查詢相應(yīng)的keyValue時(shí),先利用MemstoreScanner從MemStore中查找,如果沒(méi)有相應(yīng)數(shù)據(jù),再利用HFileScanner從HFile的DataBlock中遍歷,DataIndex能快速定位Block所在的位置。

7、由于HFile已經(jīng)被持久化到HDFS中,對(duì)HFile的每次IO讀取,都只是讀取一個(gè)Data數(shù)據(jù)塊的大小,Data的位置可以根據(jù)HFile的DataIndex信息來(lái)查詢。

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

關(guān)于“HBase文件索引有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)站標(biāo)題:HBase文件索引有什么用
轉(zhuǎn)載源于:http://www.chinadenli.net/article10/peeedo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化網(wǎng)站制作面包屑導(dǎo)航建站公司全網(wǎng)營(yíng)銷推廣網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)