欧美一区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號

主站蜘蛛池模板: 咸丰县| 济源市| 兴国县| 保德县| 海丰县| 红安县| 海门市| 鸡西市| 喀什市| 大兴区| 崇州市| 嫩江县| 志丹县| 崇明县| 延川县| 盘山县| 营山县| 调兵山市| 吴川市| 台安县| 阳信县| 兴和县| 庆云县| 清涧县| 富顺县| 江永县| 永德县| 精河县| 云霄县| 新安县| 青阳县| 桐乡市| 灵寿县| 新竹县| 梅河口市| 陈巴尔虎旗| 阳朔县| 福州市| 阿瓦提县| 会理县| 台山市|