隨著開源Hapdoop、Map/Reduce、Spark、HDFS、HBASE等技術(shù)的商用化,大數(shù)據(jù)管理技術(shù)得到了突飛猛進(jìn)的發(fā)展。
利用hadoop自帶基準(zhǔn)測試工具包進(jìn)行集群性能測試,測試平臺為CDH5.16上hadoop2.6版本。
目錄 /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/
使用TestDFSIO、mrbench、nnbench、Terasort 、sort 幾個使用較廣的基準(zhǔn)測試程序。
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar
一、TestDFSIO
TestDFSIO用于測試HDFS的IO性能,使用一個MapReduce作業(yè)來并發(fā)地執(zhí)行讀寫操作,每個map任務(wù)用于讀或?qū)懨總文件,map的輸出用于收集與處理文件相關(guān)的統(tǒng)計信息,reduce用于累積統(tǒng)計信息,并產(chǎn)生summary。
1. 測試HDFS寫性能
測試內(nèi)容:向HDFS集群寫10個128M的文件:
sudo -uhdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar \TestDFSIO \-write \-nrFiles 10 \-size 128MB \-resFile /tmp/TestDFSIO_results.log
查看結(jié)果:
cat /tmp/TestDFSIO_results.log
2. 測試HDFS讀性能
測試內(nèi)容:讀取HDFS集群10個128M的文件
sudo -uhdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar \TestDFSIO \-read \-nrFiles 10 \-size 128MB \-resFile /tmp/TestDFSIO_results.log
3. 清除測試數(shù)據(jù)
sudo -uhdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar \TestDFSIO -clean
二、nnbench
nnbench用于測試NameNode的負(fù)載,它會生成很多與HDFS相關(guān)的請求,給NameNode施加較大的壓力。這個測試能在HDFS上模擬創(chuàng)建、讀娶重命名和刪除文件等操作。
測試使用10個mapper和5個reducer來創(chuàng)建1000個文件:
sudo -uhdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar nnbench \-operation create_write \-maps 10 \-reduces 5 \-blockSize 1 \-bytesToWrite 0 \-numberOfFiles 1000 \-replicationFactorPerFile 3 \-readFileAfterOpen true \-baseDir /benchmarks/NNBench-`hostname`
三、mrbench
mrbench會多次重復(fù)執(zhí)行一個小作業(yè),用于檢查在機(jī)群上小作業(yè)的運(yùn)行是否可重復(fù)以及運(yùn)行是否高效。
測試運(yùn)行一個作業(yè)50次:
sudo -uhdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar \mrbench \-numRuns 50 \-maps 10 \-reduces 5 \-inputLines 10 \-inputType descending
四、Terasort
Terasort是測試Hadoop的一個有效的排序程序。通過Hadoop自帶的Terasort排序程序,測試不同的Map任務(wù)和Reduce任務(wù)數(shù)量,對Hadoop性能的影響。實(shí)驗(yàn)數(shù)據(jù)由程序中的teragen程序生成,數(shù)量為1G和10G。
一個TeraSort測試需要按三步:
1. TeraGen生成隨機(jī)數(shù)據(jù)
2. TeraSort對數(shù)據(jù)排序
3. TeraValidate來驗(yàn)證TeraSort輸出的數(shù)據(jù)是否有序,如果檢測到問題,將亂序的key輸出到目錄
1. TeraGen生成隨機(jī)數(shù),將結(jié)果輸出到目錄/tmp/examples/terasort-intput
sudo -uhdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \teragen 10000000 /tmp/examples/terasort-input
2. TeraSort排序,將結(jié)果輸出到目錄/tmp/examples/terasort-output
sudo -uhdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \terasort /tmp/examples/terasort-input /tmp/examples/terasort-output
3.TeraValidate驗(yàn)證,如果檢測到問題,將亂序的key輸出到目錄/tmp/examples/terasort-validate
sudo -uhdfs hadoop jar \/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \teravalidate /tmp/examples/terasort-output /tmp/examples/terasort-validate
TPC-DS
1. TPC-H
TPC-H是一款面向商品零售業(yè)的決策支持系統(tǒng)測試基準(zhǔn),它定義了8張表,22個查詢,遵循SQL92。TPC-H基準(zhǔn)的數(shù)據(jù)庫模式遵循第三范式,葉曉俊教授等學(xué)者認(rèn)為“它的數(shù)據(jù)表數(shù)據(jù)特征單一(如數(shù)據(jù)不傾斜) ,其數(shù)據(jù)維護(hù)功能僅僅限制了潛在的對索引的過度使用,而沒有測試DBMS 執(zhí)行真實(shí)數(shù)據(jù)維護(hù)操作數(shù)據(jù)提娶轉(zhuǎn)換和加載(ETL) 功能的能力”。同時,新興的數(shù)據(jù)倉庫開始采用新的模型,如星型模型、雪花模型。TPC-H已經(jīng)不能精準(zhǔn)反映當(dāng)今數(shù)據(jù)庫系統(tǒng)的真實(shí)性能。為此,TPC組織推出了新一代的面向決策應(yīng)用的TPC-DS 基準(zhǔn)。
2. TPC-DS
TPC-DS采用星型、雪花型等多維數(shù)據(jù)模式。它包含7張事實(shí)表,17張緯度表平均每張表含有18列。其工作負(fù)載包含99個SQL查詢,覆蓋SQL99和2003的核心部分以及OLAP。這個測試集包含對大數(shù)據(jù)集的統(tǒng)計、報表生成、聯(lián)機(jī)查詢、數(shù)據(jù)挖掘等復(fù)雜應(yīng)用,測試用的數(shù)據(jù)和值是有傾斜的,與真實(shí)數(shù)據(jù)一致。可以說TPC-DS是與真實(shí)場景非常接近的一個測試集,也是難度較大的一個測試集。
TPC-DS的這個特點(diǎn)跟大數(shù)據(jù)的分析挖掘應(yīng)用非常類似。Hadoop等大數(shù)據(jù)分析技術(shù)也是對海量數(shù)據(jù)進(jìn)行大規(guī)模的數(shù)據(jù)分析和深度挖掘,也包含交互式聯(lián)機(jī)查詢和統(tǒng)計報表類應(yīng)用,同時大數(shù)據(jù)的數(shù)據(jù)質(zhì)量也較低,數(shù)據(jù)分布是真實(shí)而不均勻的。因此TPC-DS成為客觀衡量多個不同Hadoop版本以及SQL on Hadoop技術(shù)的最佳測試集。這個基準(zhǔn)測試有以下幾個主要特點(diǎn):
一共99個測試案例,遵循SQL’99和SQL 2003的語法標(biāo)準(zhǔn),SQL案例比較復(fù)雜
分析的數(shù)據(jù)量大,并且測試案例是在回答真實(shí)的商業(yè)問題
測試案例中包含各種業(yè)務(wù)模型(如分析報告型,迭代式的聯(lián)機(jī)分析型,數(shù)據(jù)挖掘型等)
幾乎所有的測試案例都有很高的IO負(fù)載和CPU計算需求
3. TPC-DS認(rèn)證現(xiàn)狀
TPC-DS以其高標(biāo)準(zhǔn)、高要求得到大家的廣泛認(rèn)知,理應(yīng)得到廣泛的應(yīng)用,但是到目前為止還沒有任何廠商得到TPC官方的認(rèn)證。究其原因,本文認(rèn)為:
傳統(tǒng)的數(shù)據(jù)庫廠商,DBMS系統(tǒng)比較成熟,SQL的支持也相當(dāng)完善,但是其分布式、并行處理能力欠缺,導(dǎo)致其性能很差。所以傳統(tǒng)的廠商不愿意發(fā)布測試結(jié)果。新型的計算模型如Map/Reduce、spark,具有較好的并行處理能力,但是SQL的兼容性比較差,如HiveSQL、SparkSQL只支持40個SQL,從而也無法發(fā)布TPC-DS測試報告。盡管如此,各廠商還是通過非TPC官方的途徑發(fā)布TPC-DS的部分測試結(jié)果,以展現(xiàn)其在性能方面的提升。由此可見大家對TPC-DS的程接受度。
大數(shù)據(jù)評測基準(zhǔn)用于公平、客觀地評測不同大數(shù)據(jù)庫產(chǎn)品/平臺的功能和性能,對人們選擇合適的大數(shù)據(jù)分析決策系統(tǒng)具有重要的參考價值。隨著國內(nèi)外各代表性的Hadoop發(fā)行版廠商以TPC-DS為標(biāo)準(zhǔn)測評產(chǎn)品,TPC-DS也就逐漸成為了業(yè)界公認(rèn)的大數(shù)據(jù)系統(tǒng)測試基準(zhǔn)。但是隨著大數(shù)據(jù)應(yīng)用在各行各業(yè)的發(fā)展,測試基準(zhǔn)也需不斷與時俱進(jìn)。大數(shù)據(jù)測試基準(zhǔn)仍然面臨著諸多挑戰(zhàn),還需要政府、學(xué)術(shù)界和工業(yè)界的緊密合作。
(免責(zé)聲明:圖文來自網(wǎng)絡(luò),若有侵權(quán),請聯(lián)系禿頭程序員后臺刪除)
推薦閱讀
做了五年大數(shù)據(jù)開發(fā)工程師總結(jié)的的大數(shù)據(jù)學(xué)習(xí)路線
禿頭程序員
小米首發(fā)隔空充電,如科幻電影般的新技術(shù)!
禿頭程序員
我知道你在看喲