Accordion:HBase 「呼吸式」內存壓縮算法

2020-12-08 CIO時代網
  介紹:

  現今,HBase 所支持的現代產品對Hbase讀寫性能的期望越來越高。理想情況下,HBase 也希望在保證其可靠的持久存儲的前提下能同時享有內存資料庫的速度。社區的貢獻者在HBase 2.0中引入了一種名為Accordion的新算法,這促使Hbase又朝著其理想的目標邁出了重要的一步。

  Hbase RegionServer 負責將數據劃分到多個Region中。RegionServer 內部(垂直)的可伸縮性能對於最終用戶體驗以及整個系統的利用率至關重要。Accordion 算法通過更好地利用RAM來進一步提高RegionServer的可擴展性。Accordion 算法可以實現在內存中容納更多的數據,並且降低寫入磁碟的頻率。這正好是多個場景下我們所需要的。首先,HBase的磁碟佔用和寫入放大因此減少;其次,更多數據的讀取和寫入將直接從RAM中獲得,更少的讀取和寫入基於磁碟I/O,換句話說,HBase的性能得到提高。在2.0版本之前,這些不同的指標是不能同時滿足的,並且相互制約。而通過Accordion 算法,它們都同時得到了改善。

  Accordion 的靈感來自於HBase的LSM樹形設計模式。一個 HBase Region 被存儲為一系列可查找的鍵值對映射。最上面是一個可變內存存儲,稱為MemStore ,接收最新Put進來的數據。其餘的是不變的HDFS文件,稱為HFile 。一旦MemStore寫滿,它將被刷新到磁碟,從而創建一個新的HFile。HBase採用多版本並發控制,也就是說,MemStore將所有修改後的數據存儲為獨立版本。因此,一條數據的多個版本同時駐留在MemStore和HFile層中。當一個讀操作進來,Hbase會優先掃描BlockCache中的Hfile拿取最新的版本數據。為了減少磁碟訪問次數,HFile在後臺異步進行壓縮合併,這個過程將真正清除已刪除的數據,合併小的HFile文件。

  通過將隨機 application-level I/O轉換為順序磁碟I/O,LSM樹可提供出色的寫入性能。但是,傳統的設計並未嘗試壓縮內存數據。這源於歷史原因:LSM樹設計當時,RAM還是非常緊缺的資源,因此MemStore的容量很小。隨著硬體環境的不斷變化,由RegionServer管理的整個MemStore可能為數千兆字節,這就為Hbase優化留下了大量空間。

  Accordion 算法重新將LSM原理應用於MemStore,以便當數據仍在RAM中時消除冗餘和其他開銷。這樣做可以減少Flush到HDFS的頻率,從而減少寫入放大和整個磁碟佔用空間。隨著刷新次數的減少,MemStore寫入磁碟的頻率會降低,因此寫入性能會提高。磁碟上的數據較少也意味著對塊緩存的壓力較小,命中率較高,更佳的讀響應。最後,減少磁碟寫入也意味著在後臺發生較少的壓縮,即讀取和寫入周期將縮短。總而言之,內存壓縮算法的效果可以被看作是一個催化劑,使整個系統的運行速度更快。

  目前Accordion提供了兩個級別的內存壓縮:basic 級別和 eager 級別。前者適用於所有數據更新模式的通用優化,後者對於高數據流的應用程式非常有用,如生產-消費隊列,購物車,共享計數器等。所有這些使用案例都會對rowkey進行頻繁更新,生成多個冗餘版本的數據,這些情況下Accordion算法將發揮其價值。但另一方面,eager 級壓縮優化可能會導致更大的計算開銷(更多內存副本和垃圾收集),這可能會影響數據寫入時的響應時間。如果MemStore開啟了 MemStore-本地分配緩衝區(MSLAB)配置則開銷會很高。所以建議不要將此配置與eager級壓縮結合使用。

  如何使用

  內存壓縮可以在全局和列族級別進行配置。支持三種級別配置:none (傳統實現), basic, and eager。

  默認情況下,所有表都是basic內存壓縮。可以在hbase-site.xml中覆蓋寫這個全局配置,如下所示:

  性能增益

  我們通過廣受歡迎的雅虎雲服務基準測試YCSB對HBase進行了廣泛的測試。我們的實驗使用了100-200 GB數據集,並且執行了各種具有代表性的工作負載。結果表明Accordion算法所帶來的性能增益得到的顯著提升。

  重尾 (Zipf) 分布:第一個實驗會執行一個工作負載,其中rowkey遵循大多數現實生活場景中出現的Zipf分布。在這種情況下,當100%的操作是寫入操作時,Accordion實現寫入放大率降低30%,寫入吞吐量提高20%,GC降低22%。當50%的操作是讀取時,尾部讀取延遲減少12%。

  均勻分布:第二個實驗的工作量是所有rowkey都均衡分布。在此情況下,在100%寫入的情況下,Accordion的寫入放大率降低25%,寫入吞吐量提高50%,GC降低36%。尾部讀取延遲不受影響(由於沒有本地化,這是預期的)。  

Accordion如何工作

  高級設計:

  Accordion推出了CompactingMemStore,一個內部使用壓縮策略的MemStore實現。與默認的MemStore相比,它將所有數據保存在一個單片數據結構中,Accordion將其作為一連串的segment來管理。最新的segment,稱為active segment(段),是可變的,用來接收Put操作。一旦達到溢出條件(默認情況下,32MB-25%的MemStore大小),active segment 被移動到管道( in-memory pipeline)中,並置為不可變segment,我們稱之為內存刷新(in-memory flush)。Get 操作通過掃描這些 segment 和 HFiles 拿取數據(後者通過塊緩存進行訪問,與往常訪問HBase一樣)。

  CompactingMemStore 可能會不時在後臺合併多個不可變段,從而創建更大更精簡的段。因此,管道是「會呼吸的」(擴張和收縮),類似於手風琴波紋管,所以我們也將Accordion 譯為手風琴。

  當RegionServer決定刷新一個或多個MemStore到磁碟以釋放內存時,它會考慮刷新CompactingMemStore中已經移入管道中的segment到磁碟。基本原理是延長MemStore有效管理內存的生命周期,以減少整體I / O。當刷新發生時,管道中所有的segment 段將被移出合成一個快照, 合併並流式傳輸形成新的HFile。

  圖1顯示了CompactingMemStore與傳統設計的結構。

  分段結構:

  與默認的MemStore類似,CompactingMemStore在單元存儲之上維護一個索引,以允許通過鍵快速搜索。不同的是,MemStore索引被實現為一個Java skiplist(ConcurrentSkipListMap ), 一種動態但奢侈的數據結構,用於管理大量小對象。CompactingMemStore 則在不可變的 segment 索引之上上實現了高效且節省空間的扁平化布局。這種通用優化可以幫助所有壓縮策略減少RAM開銷,使數據幾乎不存在冗餘。一旦將一個段添加到管道中,CompactingMemStore 就將其索引序列化為一個名為CellArrayMap 的有序數組,該數組可以快速進行二進位搜索。

  CellArrayMap既支持從Java堆內直接分配單元,也支持MSLAB的自定義分配(堆內或堆外),實現差異通過被索引引用的KeyValue對象抽象出來(圖2)。CellArrayMap本身始終分配在堆內。

  壓縮算法:

  內存中壓縮算法在管道中的Segment上維護了一個單一的扁平化索引。這樣的設計節省了存儲空間,尤其是當數據項很小時,可以及時將數據flush至磁碟。單個索引可使搜索操作在單一空間進行,因此縮短了尾部讀取延遲。

  當一個active segment被刷新到內存時,它將排隊到壓縮管道,並立即觸發一個異步合併調度任務。該調度任務將同時掃描管道中的所有段(類似於磁碟上的壓縮)並將它們的索引合併為一個。basic和eager 壓縮策略之間的差異體現在它們處理單元數據的方式上。basic壓縮不會消除冗餘數據版本以避免物理複製; 它只是重新排列KeyValue對象的引用。eager壓縮則相反,會過濾出冗餘數據。但這是以額外的計算和數據遷移為代價的。例如,在MSLAB存儲器中,倖存的單元被複製到新創建的MSLAB中。當數據高度冗餘時,壓縮開銷的代價就變得有意義了。

  未來的壓縮可能會在basic壓縮策略和eager壓縮策略之間實現自動選擇。例如,該算法可能會在一段時間內嘗試eager壓縮,並根據所傳遞的值(如:數據被刪除的比例)安排下一次壓縮。這種方法可以減輕系統管理員的先驗決定,並適應不斷變化的訪問模式。

  結束語

  本文,我們介紹了Accordion的基本原理,配置,性能增益以及內存壓縮算法的一些細節。如有紕漏之處,還望多多指教。

第三十屆CIO班招生 法國布雷斯特商學院碩士班招生 北達軟EXIN網絡空間與IT安全基礎認證培訓 北達軟EXIN DevOps Professional認證培訓

責編:zhangxuefeng

相關焦點

  • 一條數據的HBase之旅,簡明HBase入門教程-開篇
    每一個Column Family中所關聯的一些關鍵配置:① CompressionHBase當前可以支持Snappy,GZ,LZO,LZ4,Bzip2以及ZSTD壓縮算法② DataBlock EncodingHBase針對自身的特殊數據模型所做的一種壓縮編碼③ BloomFilter可用來協助快速判斷一條記錄是否存在
  • HBase基礎概念知識學習之物理機制了解
    hbase中數據的最小單元是cell不同Region分布到不同RegionServer上Region由一個或者多個store組成,每個store保存一個cf每個store又由一個memstore和0個至多個storeFile組成Memstore
  • 你了解壓縮算法嗎?常見的壓縮算法都在這裡了
    此外,我們把相機拍完的照片保存到計算機上的時候,也會使用壓縮算法進行文件壓縮,文件壓縮的格式一般是JPEG。那麼什麼是壓縮算法呢?壓縮算法又是怎麼定義的呢?壓縮算法的定義上面介紹了文件的集合體其實就是一堆字節數據的集合,那麼我們就可以來給壓縮算法下一個定義。壓縮算法(compaction algorithm)指的就是數據壓縮的算法,主要包括壓縮和還原(解壓縮)的兩個步驟。
  • 數據壓縮算法:對於程式設計師來說,這項新技術特別實用
    首次亮相本周ACM國際程式語言和作業系統架構支持會議上發表的一篇論文中,MIT的研究人員描述了第一種「跨存儲層次壓縮對象」的技術。這種技術可以降低內存使用率,同時也可以提高性能和效率。研究人員用改進後的Java虛擬機做了實驗,結果表明,與傳統壓縮方法相比,這種新技術可以多壓縮兩倍的數據,還減少了一半的內存使用率。CSAIL的研究生Po-An Tsai是這篇論文的第一作者,她表示,「我們試圖提出一種新的存儲層次結構,能夠進行對象壓縮,因為大部分現代程式語言都是以對象的形式管理數據的。」
  • 常用數據無損壓縮算法分析
    事實上,從壓縮軟體WINRAR到熟知的MP3,數據壓縮技術早已應用於各個領域。2 數據壓縮技術概述 本質上壓縮數據是因為數據自身具有冗餘性。數據壓縮是利用各種算法將數據冗餘壓縮到最小,並儘可能地減少失真,從而提高傳輸效率和節約存儲空間。 數據壓縮技術一般分為有損壓縮和無損壓縮。
  • 百度NLP | 神經網絡模型壓縮技術
    更複雜的模型、更強的特徵以及更多的數據對工業級應用提出了更高的要求,如何有效控制內存、減少計算量以及降低功耗是深度神經網絡模型發展面臨的重要問題。壓縮算法的研究不僅提升了模型的擴展潛力,並且使其具有更廣闊的應用場景和巨大的想像空間。在百度,以搜索場景為例,用於相關性排序的神經網絡參數規模達到億級,而線上環境對計算資源要求嚴格,模型難以擴展。
  • 基於小波變換的圖像壓縮算法改進研究
    摘要:本文首先分析了基於小波變換圖像壓縮原理、流程和方法,然後針對傳統的嵌入式小波零樹壓縮編碼算法的不足,提出了改進方案。EBCOT將子帶劃分為若干塊,然後對每個塊進行編碼,產生壓縮碼流。3 嵌入式小波零樹壓縮編碼算法及改進方案3.1 傳統嵌入式小波零樹壓縮編碼算法  嵌入式編碼是指截取一段從起始位置開始,在任意位置結束的編碼碼流,可以進行解碼重構整幅原始圖像,截取的碼流越長,重構的圖像越接近原始圖像。
  • 基於DSP Builder的JPEG靜態圖像壓縮算法的實現
    DCT(Discrete Cosine Transform)為基礎的有損壓縮算法;另一種是以預測技術為基礎的無損壓縮算法。使用有損壓縮算法時,在壓縮比為25:1的情況下,壓縮後還原得到的圖像與原始圖像相比較,非圖像專家難於找出它們之間的區別,因此得到了廣泛的應用。例如,在VCD和DVD-Video電視圖像壓縮技術 中,就使用JPEG的有損壓縮算法來取消空間方向上的冗餘數據。
  • CVPR 2019Oral論文解讀|百度提出關於網絡壓縮和加速的新剪枝算法
    雷鋒網(公眾號:雷鋒網) AI 科技評論按:百度關於網絡壓縮和加速的論文《 Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration》被 CCF A 類學術會議 CVPR 2019 收錄為 Oral 論文,這篇論文提出了新的基於濾波器的幾何中心(geometric
  • 基於小波包變換和壓縮感知的人臉識別算法
    壓縮感知理論的出現和發展,給人臉識別帶來了新的啟發,使得基於稀疏表示的人臉識別技術得到了廣泛研究。傳統的基於稀疏表示的人臉識別是利用壓縮感知超完備庫下的稀疏表示,將訓練圖片直接構造為冗餘字典,再求解重構算法下的最優稀疏線性組合係數,然後根據這些係數來對人臉圖像進行分類。
  • JPEG2000數據壓縮的FPGA實現
    文中的設計採用片上系統(System On Claip)方案,可實現對解析度1024x1024圖像的壓縮。在有效實現數據壓縮基礎上,系統還具有較好擴展性。研究利用FPGA實現圖像數據壓縮,將壓縮算法映射到專用集成電路(ASIC)設計,具有非常廣闊的市場應用前景。
  • 研究發現:數據壓縮算法可以改變物理和生物學的計算
    在計算機科學和資訊理論中,數據壓縮算法是按照特定的編碼機制將未經編碼的數據比特(或者其它信息相關的單位)較為緊湊地表示信息的方法。常見的例子如ZIP文件格式,ZIP文件格式是一種數據壓縮和文檔儲存的文件格式,以便於在網絡上傳播和分發文件。
  • 基於小波變換的視頻圖像壓縮算法研究
    對數據量龐大的視頻圖像信息進行壓縮是非常必要的,因此視頻圖像的壓縮也一直吸引著廣大研究者進行不斷深入的探索。 小波變換具有良好的時、頻局域性,並且由於其在非平穩圖像信號分析方面的靈活性和適應人眼視覺特性的能力,已經成為圖像編碼的有力工具。應用三維小波變換進行視頻壓縮編碼,需考慮選用時、空域2組小波濾波器組。
  • CVPR2017精彩論文解讀:效果更顯著的模型壓縮算法和泛化優化算法
    下文是優必選雪梨AI研究院對其入選CVPR 2017的兩篇論文《基於低秩稀疏分解的深度模型壓縮算法》和《利用奇異值界定提升深度神經網絡訓練效果和識別精度》進行的解讀,除此之外他們還對會上Workshop競賽的進行了相關介紹。
  • 74KB圖片也高清,谷歌用神經網絡打造圖像壓縮新算法
    最新的好消息是,谷歌團隊採用了一種GANs與基於神經網絡的壓縮算法相結合的圖像壓縮方式HiFiC,在碼率高度壓縮的情況下,仍能對圖像高保真還原。GAN(Generative Adversarial Networks,生成式對抗網絡)顧名思義,系統讓兩個神經網絡相互「磨鍊」,一個神經網絡負責生成接近真實的數據,另一個神經網絡負責區分真實數據與生成的數據。
  • 天才高中生參與斯坦福新研究:在圖像壓縮上,人類比算法強!
    新智元報導 來源:techxplore、arXiv編輯:大明、金磊【新智元導讀】目前,圖像壓縮算法已然進入較為成熟階段最近,來自斯坦福的工程師及其團隊三位高中生實習生共同完成的工作表明,在圖像壓縮方面,人類還是比算法強。人類還是要比算法強!我們可能經常會遇到類似這樣的一個場景:你的朋友打算領養一隻狗,他給你發了一張照片,但是由於各種數據的限制,你只能看到一張比較模糊的照片。
  • 最後的絕唱 南亞易勝8GB/DDR3內存評測
    不過南亞易勝內存今年將會消失,內存行業經過殘酷的市場競爭,日本爾必達內存已經倒下,面臨給美光收購。南亞易勝的母廠也終究承受不住虧損,被迫放棄了內存模組業務。換而言之,我們見到的南亞易勝DDR3內存將成為絕唱。今天筆者為大家介紹的正是這個牌子最後的單條8GB DDR3內存,歷史將見證這一悲壯的時刻!
  • 影馳HOF 4GB*2 DDR3 2400超頻內存評測
    內存的工作電壓1.65V,支持XMP,使用8層黑色PCB,為兩根4GB DDR3 2400雙通道內存套裝。  編輯點評:  影馳官方設定的XMP DDR3 2400頻率,擁有出色的內存時序11-13-13-30。而DDR3 2800雖然頻率更高,但是內存時序降為12-13-13-30,它的內存延遲不如XMP頻率出色。影馳在DDR3內存頻率和時序找到最佳的銜接點,用戶可得到綜合最好的內存性能。
  • 統治世界的十大算法
    軟體正在吃掉世界,而軟體的核心則是算法。算法千千萬萬,又有哪些算法屬於「皇冠上的珍珠」呢?Marcos Otero 給出了他的看法。什麼是算法?
  • FEKO計算中減少內存的方法
    為了在已有的硬體計算條件下,解決儘量大的電磁問題,FEKO提供了一些減少內存的途徑,主要可分為二個層面,其一是算法層面的節約內存,其二是技巧層面的節約內存。本文引用地址:http://www.eepw.com.cn/article/259796.htm算法從算法上面來講,FEKO提供的有MoM,MLFMM,PO,UTD,FEM。