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