翻譯|大數據新聞|編輯:蔣永|2019-03-19 10:17:37.000|閱讀 275 次
概述:本篇博文對Apache Hadoop生態系統中可用的幾種流行數據格式和存儲引擎進行了性能比較。這些內容將有助于用戶理解如何(以及何時)可以改善大數據工作負載的處理。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
本篇博文對Apache Hadoop生態系統中可用的幾種流行數據格式和存儲引擎(包括Apache Avro、Apache Parquet、Apache HBase和Apache Kudu)進行了性能比較,涉及空間效率、數據擷取性能、分析掃描和隨機數據查詢等。這些內容將有助于用戶理解如何(以及何時)可以改善大數據工作負載的處理。
本文作者ZBigniew Baranowski是一位數據庫系統專家,并且是提供和支持中央數據庫和基于Hadoop服務的CERN(歐洲核子研究組織)的成員。
比較Hadoop文件格式和存儲引擎的最初想法是受第一個在CERN(ATNAS EventIndex)上大規模采用Hadoop系統版本啟發的。
該項目于2012年開始啟動,當時利用MapReduce處理CSV是處理大數據的常見方式。同時,Apache Spark、Apache Impala(正在孵化中)之類的平臺或Avro、Parquet等文件格式不像現在這么成熟和流行,甚至都尚未啟動。因此回顧過去,基于使用HDFS MapFiles選擇的設計是一種“過時的”且較不受歡迎的概念。
使用ATLAS EventIndex數據進行測試的最終目標是了解可以最優的使用哪種存儲數據方法;以及相對于系統的主要用例,此類應用程序的預期收益是什么。我們想要進行比較的主要方面是數據量和以下性能。
ATLAS是針對大型強子對撞機(CERN的粒子加速器)建造的七大粒子檢測器實驗之一。
ATLAS EventIndex是所有碰撞(稱為“事件”)的元數據目錄,這些碰撞在ATLAS實驗中發生,后被永久存儲在CERN存儲基礎設施中(通常每秒有幾百個事件)。物理學家使用該系統來識別和定位感興趣的事件,通過共性把事件群體進行分組,以及檢查產生周期的一致性。
每個編入索引的碰撞均作為單獨的記錄存儲在ATLAS EventIndex中,其平均長度為1.5KB,具有56個屬性,其中6個屬性唯一地標識了一個碰撞。大多數屬性是文本類型,只有少數屬性是數字類型。在某一給定時刻,包含占用幾十T字節(不包括數據復制)的6e10個記錄存儲在HDFS中。
已使用不同的存儲技術和壓縮算法(包括Snappy、GZip或BZip2)將相同的數據集存儲在同一Hadoop集群中:
在測試中,主鍵前3列的元組被用作分區鍵,允許在分區數(幾千個)和平均分區大小(數百兆字節)之間獲得良好的平衡
當將ATLAS EventIndex數據存儲到HBase中時,每個事件屬性存儲在單獨的單元格中,并且行鍵由事件標識屬性列的級聯組成。另外,為減小HBase塊的大小(否則每行長度會有8KB)啟用了行鍵(DATA_BLOCK_ENCODING)的差分(FAST_DIFF)編碼。
在評估中,所有文字類型都以字典編碼存儲,數字類型則以位隨機編碼存儲。此外,通過使用主鍵的第一列(由與HBase案例中相同的列組成)作為分區鍵,引入了范圍和散列分區的組合。
數據訪問和擷取測試在由14臺實體機器組成的集群上進行,每臺機器配備有:
從Cloudera Data Hub(CDH)發行版本5.7.0安裝的Hadoop集群包括以下幾個方面:
在本報告后面提到的所有測試中,使用Apache Impala(正在孵化中)作為數據擷取和數據訪問框架。
重要提示:盡管本次測試為獲得盡可能精確的結果付出了一些努力,但這不應被視為測試技術的通用和基本基準。因為存在太多可能影響測試的變量,所以具體情況應該具體分析,例如:
圖表翻譯:
ROW LENGTH INBYTES 行長度字節
No compression 無壓縮
Snappy
GZip/BZip2
The figure reports on the average row length in bytes for each tested format and compression type
該圖顯示了各種測試格式和壓縮類型的平均行長度(以字節為單位)
測試描述:在使用不同技術和壓縮方法存儲相同的數據集(百萬條記錄)后,測量記錄的平均大小。
注釋:
圖表翻譯:
AVERGE INSERTION RATE(KHZ) 平均插入速率(KHZ)
Figure reports on the average ingestion speed (103 record/s) per data partition for each tested format and compression type
該圖顯示了各種測試格式和壓縮類型的每個數據分區的平均擷取速度(103個記錄/秒)
測試描述:測量單個數據分區中的記錄擷取速度。
注釋:
圖表翻譯:
AVERGE RANDOM LOOKUP LATENCY[S] 平均隨機查找延遲 [單位:S]
Figure reports on the average random record lookup latency [in seconds] for each tested format and compression type
該圖顯示了每種測試格式和壓縮類型的平均隨機記錄查找延遲 [以秒為單位]
測試描述:通過提供記錄標識符(復合鍵)從記錄中檢索非鍵屬性。
注釋:
圖表翻譯:
AVERGE SCAN RATE(KHZ) 平均掃描速率(KHZ)
Figure reports on the average scans speed with the same predicate per core [in k records/s] for each tested format and compression type
該圖顯示了各種測試格式和壓縮類型對每個核心具有相同的謂詞[單位:k 條記錄/秒]的平均掃描速度
測試描述:計算在整個記錄集合中的非鍵列之一中具有某個子串的記錄數。
注釋:
在本節中,我們想分享關于數據格式使用的其它注意事項及其優點和缺點,因為這些是從我們的參考工作負載測試中得出的:
值得注意的是,壓縮算法不僅在減少數據量方面發揮了重要作用,在增強數據擷取和數據訪問的性能方面也扮演著重要角色。在所有這些領域中,Snappy編解碼器為所有測試技術提供了最佳的結果,比沒有壓縮的純編碼(Avro除外)更好。
對Hadoop生態系統上流行存儲技術的評估已經在許多方面展示了每種技術的利弊,這些方面例如減少總體數據量、簡化數據擷取及提高數據訪問的性能。
Apache Avro已被證明是一種用于結構化數據的快速通用編碼器。由于具備非常高效的序列化和反序列化性能,當需要同時訪問記錄的所有屬性時,此格式可以保證非常好的性能 - 數據傳輸、分段區域等。
另一方面,Apache HBase提供了非常優異的隨機數據訪問性能,以及如何存儲數據(無模式表)的最大靈活性。HBase數據的批處理性能在很大程度上取決于所選擇的數據模型,并且通常不能在該領域與其他測試技術競爭。因此,任何使用HBase數據的分析都應該很少執行。
同時列存儲方式,例如Apache Parquet和Apache Kudu,在快速數據采集、快速隨機數據查找和可擴展數據分析之間提供了非常好的靈活性,同時確保了系統簡單性 - 只需要利用一種存儲數據的技術。
Parquet在更快的數據掃描和擷取方面具有優勢,而Kudu擅長于更快的隨機查找。
替代單一存儲技術實現可以考慮由用于批處理(如Parquet)的原始存儲和用于隨機存取的索引層(例如HBase)組成的混合系統。這允許在某些訪問路徑上充分利用技術專業化/優化,并提供最佳性能。值得注意的是,這種方法存在數據重復和系統架構總體復雜性的問題,并且需要以更高的維護成本為代價。因此,如果系統的簡單性是重要因素之一,Apache Kudu似乎是一個很好的折衷方式。
圖表翻譯:
Throughput for Analytics 分析吞吐量
Map Files地圖文件
Fast random access (goodness for online transactions) 快速隨機訪問(在線交易的優點)
歡迎撥打慧都熱線023-68661681或咨詢,我們將幫您轉接大數據專業團隊,并發送相關資料給您!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: