欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

歡迎來到云服務器

大數據技術

HBase GC的前生當代 – 演進篇

HBase GC的前生當代 – 演進篇

中國IDC圈6月3日報道,最原始的HBase CMS GC相當嚴重,常常會因為碎片過多導致Promotion Failure,嚴重影響業務的讀寫請求。幸運的是,HBase并沒有止步不前,許多優化方案相繼被提出并孝敬給社區,本文要先容的就是幾個較量重要的焦點優化,別離是針對Memstore所作的兩個優化:Thread-Local Allocation Buffer和MemStore Chunk Pool 以及針對BlockCache所作的優化:BuckctCache方案。在具體先容這幾個優化之前有須要簡樸先容一下HBase GC優化的方針,很直觀的,第一是要只管制止長時間的Full GC,制止影響用戶的讀寫請求;第二是只管淘汰GC時間,提高讀寫機能;接著別離來看HBase針對GC所做的各類優化:

MemStore GC優化一 - Thread-Local Allocation Buffer

HBase數據寫入操縱實際上并沒有直接將數據寫入磁盤,而是先寫入內存并順序寫入HLog,之后期待滿意某個特定條件后統一將內存中的數據刷新到磁盤。一個RegionServer凡是由多個Region構成,每張Region凡是包括一張表的多個列族,而每個列族對應一塊內存區域,這塊內存被稱為MemStore,很顯然,一個RegionServer會由多個Region組成,一個Region會由多個MemStore組成。

最原始的HBase版本存在很嚴重的內存碎片,常常會導致長時間的Full GC,個中最焦點的問題就出在MemStore這里。因為一個RegionServer由多個Region組成,差異Region的數據寫入到對應Memstore,在JVM看來其實是殽雜在一起寫入Heap的,此時如果Region1上對應的所有MemStore執行落盤操縱,就會呈現下圖所示場景:

HBase GC的前生當代 – 演進篇

為了優化這種內存碎片大概導致的Full GC,HBase警惕了Arena Allocation內存打點方法,,它通過順序化分派內存、內存數據分塊等特性使得內存碎片越發粗粒度,有效改進Full GC環境;

詳細實現道理如下:

1. 每個MemStore會實例化出來一個MemStoreLAB

2. MemStoreLAB會申請一個2M巨細的Chunk數組和一個Chunk偏移量,初始值為0

3. 當一個KeyValue值插入MemStore后,MemStoreLAB會首先通過KeyValue.getBuffer()取得data數組,并將data數組復制到Chunk數組中,之后再將Chunk偏移量往前移動data.length

4. 假如當前Chunk滿了之后,再挪用new byte[ 2 * 1024 * 1024]申請一個新的Chunk

很顯然,通過申請2M巨細的Chunk可以使得內存碎片越發粗粒度,官方在優化前后通過配置 -xx:PrintFLSStatistics = 1 統計了老生代的Max Chunk Size別離隨時間的變革曲線,如下圖所示:

HBase GC的前生當代 – 演進篇

HBase GC的前生當代 – 演進篇

由上圖可以看出,未優化前碎片會大量呈現導致頻繁的Full GC,優化后固然依然會發生大量碎片,可是最大碎片巨細一直會維持在1e+08閣下,極大地低落了Full GC頻率。

MemStore GC優化二  –  MemStore Chunk Pool

然而一旦一個Chunk寫滿之后,系統就會從頭申請一個新的Chunk,這些Chunk大部門城市顛末多次YGC之后提升到老生代,假如某個Chunk再沒有被引用就會被JVM垃圾接納。很顯然,不絕申請新的Chunk會導致YGC頻率不絕增多,YGC頻率增加一定會導致提升到老生代的Chunk增多,進而增加CMS GC產生的頻率。假如這些Chunk可以或許被輪回操作,系統就不需要申請新的Chunk,這樣就會使得YGC頻率低落,提升到老生代的Chunk就會淘汰,CMS GC產生的頻率就會低落。這就是MemStore Chunk Pool的焦點思想,詳細實現如下:

1. 系統會建設一個Chunk Pool來打點所有未被引用的chunks,這些chunk就不會再被JVM看成垃圾接納掉了

2. 假如一個Chunk沒有再被引用,將其放入Chunk Pool

3. 假如當前Chunk Pool已經到達了容量最大值,就不會再采取新的Chunk

4. 假如需要申請新的Chunk來存儲KeyValue,首先從Chunk Pool中獲取,假如可以或許獲取獲得就反復操作,假如為null就從頭申請一個新的Chunk

官目的對該優化也舉辦了簡樸的測試,利用jstat -gcutil對優化前后的JVM GC環境舉辦了統計,詳細的測試條件和測試功效如下所示:

測試條件:

測試功效:

HBase GC的前生當代 – 演進篇

很顯然,顛末優化后YGC時間低落了40+%閣下,FGC的次數以實時間更是大幅下降。

BlockCache優化 - BuckctCache方案

騰訊云代理

Copyright © 2003-2021 MFISP.COM. 國外vps服務器租用 夢飛云服務器租用 版權所有 ? 粵ICP備11019662號

主站蜘蛛池模板: 建昌县| 措美县| 闽侯县| 深泽县| 白河县| 夏邑县| 崇州市| 远安县| 枣庄市| 策勒县| 南召县| 正定县| 永川市| 闵行区| 苍溪县| 巴林右旗| 西充县| 额敏县| 永康市| 屯昌县| 缙云县| 仙游县| 聊城市| 景德镇市| 三亚市| 弋阳县| 沈丘县| 正阳县| 呼和浩特市| 万源市| 台州市| 汪清县| 永仁县| 始兴县| 泰兴市| 钦州市| 亳州市| 喜德县| 仪征市| 桂林市| 四子王旗|