溫馨提示×

溫馨提示×

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

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

HBase有什么優(yōu)化點

發(fā)布時間:2021-12-08 14:31:44 來源:億速云 閱讀:134 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了HBase有什么優(yōu)化點,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

HBase 有哪些優(yōu)化點?

這是個相對開放的問題,問題沒有那么得細,面對這種問題千萬不要亂了陣腳,其實這種問題答得好是很加分的,可以從幾個不同的方向來回答,這樣顯得有條理,而且可以向面試官展現(xiàn)你的多維度思考和總結(jié)的能力。

兩個角度,一個從使用者的角度,一個從維護者的角度。

1. 從使用者的角度,可以優(yōu)化存儲模型的設(shè)計,包括以下幾個方面:

rowkey設(shè)計:高位用散列,長度不宜過長,可以適當?shù)匕研枰獧z索的條件拼接在rowkey里。查詢時盡量用get,scan時要指定start/end key。

列族的設(shè)計:列族盡量少,且不同列族的數(shù)據(jù)量要盡量均勻。

列族盡量少是因為列族對應的底層存儲的一個文件目錄,文件目錄少有助于提高文件檢索速度。

數(shù)據(jù)量要均勻是因為,當一個cf量大到一定程度,memstore會刷盤,而刷盤這個動作不是只針對單個cf,而是整個服務器,這個時候如果另一個cf的數(shù)據(jù)量很小那也會跟著刷盤,這就造成了會有大量小文件生成,HDFS是最忌諱小文件的,同時小文件的過多也會影響檢索的效率,需要從多個文件中檢索目標。

預分區(qū):在寫比較頻繁的場景下,數(shù)據(jù)增長太快,split的次數(shù)也會增多,額外的資源消耗也會增大,另外數(shù)據(jù)分布不均勻會造成熱點問題,這些都是需要預分區(qū)的原因。

2. 從系統(tǒng)維護者的角度來說,可以對系統(tǒng)優(yōu)化,包括以下幾個方面:

內(nèi)存優(yōu)化:HBase有兩塊主要的內(nèi)存memstore和blockCache的配置

BlockCache,如果寫比讀少很多,可以開到0.4-0.5。如果讀寫較均衡,0.3左右。如果寫比讀多,就默認0.2。設(shè)置這個值的時候,也要參考hbase.regionserver.global.memstore.upperLimit,該值是memstore占heap的最大百分比,兩個參數(shù)一個影響讀,一個影響寫。如果兩值加起來超過80-90%,會有OOM的風險。具體就不說了,看我之前的文章 HBase篇(4)-你不知道的HFile

GC優(yōu)化:默認cms,可以優(yōu)化為G1。

壓縮:默認未開啟,建議使用Snappy和LZO,壓縮比,壓縮解壓速率,資源消耗都是比較平衡的。

BloomFilter:默認未開啟,需要在建立表的時候加入。用布隆過濾可以節(jié)省讀磁盤過程,可以有助于降低讀取延遲。具體就不說了看我之前的文章 HBase篇(5)- BloomFilter

其實還有一些其他零零散散的點,就不說了,說這么多對于這個問題來說已經(jīng)回答地很完美了。說這些的過程中的某些點面試官很有可能是會追問下去的,比如內(nèi)存優(yōu)化,bloomfilter等,所以可以看得深入一點,回答的時候也能更加從容一點。


HRegionServer宕機后系統(tǒng)是怎么保證可用性的 ?  

宕機恢復的過程也是面試中的常見問題,重點是wal機制。

1. ZooKeeper會監(jiān)控HRegionServer的上下線情況,當ZK發(fā)現(xiàn)某個HRegionServer宕機之后會通知HMaster進行失效備援;

2. 該HRegionServer會停止對外提供服務,就是它所負責的region暫時停止對外提供服務

3. HMaster會將該HRegionServer所負責的region轉(zhuǎn)移到其他HRegionServer上,并且會對HRegionServer上存在memstore中還未持久化到磁盤中的數(shù)據(jù)進行恢復

4. 這個恢復的工作是由WAL重播來完成,這個過程如下:

  • wal實際上就是一個文件,存在/hbase/WAL/對應RegionServer路徑下。

  • 宕機發(fā)生時,讀取該RegionServer所對應的路徑下的wal文件,然后根據(jù)不同的region切分成不同的臨時文件recover.edits。

  • 當region被分配到新的RegionServer中,RegionServer讀取region時會進行是否存在recover.edits,如果有則進行恢復。


說說HBase 的 compaction 過程和作用?

在hbase中每當有memstore數(shù)據(jù)flush到磁盤之后,就形成一個storefile,當storeFile的數(shù)量達到一定程度后,就需要將 storefile 文件來進行 compaction 操作。

compaction 的作用:

  • 合并文件

  • 清除過期,多余版本的數(shù)據(jù)

  • 提高讀寫數(shù)據(jù)的效率

另外可以再說下compaction的兩種方式。

HBase 中實現(xiàn)了兩種 compaction 的方式:minor and major. 這兩種 compaction 方式的區(qū)別是:

1. Minor 操作只用來做部分文件的合并操作以及包括 minVersion=0 并且設(shè)置 ttl 的過期版本清理,不做任何刪除數(shù)據(jù)、多版本數(shù)據(jù)的清理工作。

2. Major 操作是對 Region 下的HStore下的所有StoreFile執(zhí)行合并操作,最終的結(jié)果是整理合并出一個文件。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“HBase有什么優(yōu)化點”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!

向AI問一下細節(jié)

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

AI