亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會深度解析
914
2022-05-28
2.3.6 MemStore與HFile
為了提高數(shù)據(jù)寫入時的吞吐量,HBase并不會實時的將寫入的數(shù)據(jù)直接刷入磁盤,而是先將數(shù)據(jù)放入內(nèi)存中進(jìn)行保管,MemStroe對象就是負(fù)責(zé)此項任務(wù)的邏輯對象,它將數(shù)據(jù)以Key-Values的形式保存在內(nèi)存中。
將數(shù)據(jù)直接放入內(nèi)存讀寫雖然很快,但這樣做并不安全,因為一旦服務(wù)器重啟數(shù)據(jù)便會全部丟失。所以HBase在此處設(shè)計了一種預(yù)寫日志結(jié)合MemStroe的方式來解決這個問題。
當(dāng)客戶端向HBase發(fā)起一次寫入請求的時候,HBase首先會通過RegionServer將數(shù)據(jù)寫入預(yù)寫日志,之后再用MemStroe對象將數(shù)據(jù)保存到內(nèi)存之中。由于有了預(yù)寫日志,當(dāng)服務(wù)出現(xiàn)故障重啟之后,Region可以通過日志將數(shù)據(jù)復(fù)原到MemStroe。
HBase的這種寫入策略極大地提升了其數(shù)據(jù)寫入的吞吐量,因為一旦寫入日志的動作完成了就算寫入數(shù)據(jù)成功。同時預(yù)寫日志是對磁盤文件的順序?qū)懭氩僮?,其寫入速度也十分的迅速?/p>
但是,畢竟內(nèi)存空間是有限的,MemStroe不可能沒有限制的存儲數(shù)據(jù)。所以當(dāng)一個MemStroe存儲的數(shù)據(jù)達(dá)到某個閾值的時候,HBase會將這個MemStroe的數(shù)據(jù)通過HFile的形式寫入磁盤并清空該MemStroe。
HFile是HBase最終存儲數(shù)據(jù)的載體,它本質(zhì)上對應(yīng)的是HDFS的文件。因為HFile是以經(jīng)過排序的Key-Values對象的形式進(jìn)行存儲的,所以它的在寫入文件的時候只需要采用順序?qū)懀瑢懭胨俣确浅??。HFile的邏輯架構(gòu)如圖2-11所示。
數(shù)據(jù)平臺 大數(shù)據(jù)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。