尤元建+吳洪學(xué)
摘 要:目前,越來越多的行業(yè)認(rèn)識到大數(shù)據(jù)會(huì)帶來新一輪的革命,而Apache Hadoop項(xiàng)目則是目前大數(shù)據(jù)平臺應(yīng)用的事實(shí)標(biāo)準(zhǔn)。各行業(yè)在建設(shè)大數(shù)據(jù)平臺時(shí),除功能外,性能指標(biāo)也是考慮的重要因素。目前大數(shù)據(jù)平臺性能評測工具多樣,測試過程耗時(shí)、繁瑣。鑒于此,討論建設(shè)基于BigDataBench的Hadoop2.5大數(shù)據(jù)平臺性能測試自動(dòng)化系統(tǒng),既提高工作效率,又減少人為操作差異化化,實(shí)現(xiàn)版本間性能數(shù)據(jù)自動(dòng)對比,保證了測試質(zhì)量和數(shù)據(jù)準(zhǔn)確性。同時(shí)對自動(dòng)化測試工具的演進(jìn)方向進(jìn)行了規(guī)劃。
關(guān)鍵詞:Hadoop;大數(shù)據(jù)平臺;自動(dòng)化測試;性能測試
DOIDOI:10.11907/rjdk.162030
中圖分類號:TP302
文獻(xiàn)標(biāo)識碼:A文章編號:1672-7800(2016)012-0016-3
0 引言
信息爆炸時(shí)代帶來了信息數(shù)量的級數(shù)級增長,各行業(yè)也越來越認(rèn)識到對大數(shù)據(jù)的掌控和分析能力會(huì)是未來競爭力的核心。行業(yè)決策也超越了以前依靠抽樣調(diào)查的階段,轉(zhuǎn)而依靠大數(shù)據(jù)進(jìn)行全面分析支持。
Apache Hadoop是對Google的GFS(Google File System)BigTable的一個(gè)開源實(shí)現(xiàn),具有高擴(kuò)展性、高效性、高容錯(cuò)性、低成本以及易于虛擬化等特性,是目前行業(yè)事實(shí)的應(yīng)用標(biāo)準(zhǔn)[1]。Apache Hadoop大數(shù)據(jù)生態(tài)圈核心包括HDFS、Zookeeper、Yarn、Hbase、Hive、Impala等應(yīng)用。
除功能外大數(shù)據(jù)平臺性能處理能力是評測大數(shù)據(jù)平臺的重要指標(biāo)之一。目前,大數(shù)據(jù)平臺性能測試存在的問題主要有:開源版本更換較快,需要頻繁更換版本; 測試條目較多,場景比較復(fù)雜、繁瑣,手工操作容易出錯(cuò)或不準(zhǔn)確; 整個(gè)測試過程持續(xù)時(shí)間長。本文基于BigDataBench工具和Apache Hadoop2.5進(jìn)行大數(shù)據(jù)平臺性能測試自動(dòng)化研究,嘗試解決上述問題。
1 大數(shù)據(jù)平臺性能測試內(nèi)容
經(jīng)典的大數(shù)據(jù)平臺組件性能測試項(xiàng)主要包括HDFS的讀寫、Mapreduce的執(zhí)行情況、NoSQL的數(shù)據(jù)庫能力等[2],如表1所示。
以上測試項(xiàng)覆蓋了I/O測試、I/O密集型、計(jì)算密集型及混合類型測試條目,涉及文本、圖和表等輸入數(shù)據(jù)。
2 大數(shù)據(jù)平臺性能測試工具
在性能測試中,測試工具支持必不可少,目前除Apache Hadoop自帶工具外,還有企業(yè)或組織發(fā)布了第三方測試工具。一般測試工具包括測試數(shù)據(jù)生成、負(fù)載運(yùn)行和報(bào)告生成三大功能。
2.1 Apache Hadoop自帶工具
Apache Hadoop自帶工具主要包括TestDFSIO、Sort和PE(PerformanceEvaluation),工具簡單、易用。TestDFSIO 主要用于HDFS基準(zhǔn)性能測試,Sort工具用于Mapreduce負(fù)載,PerformanceEvaluation工具主要用于Hbase性能測試。
通過運(yùn)行hadoop jar hadoop-test.jar即可查看所支持的測試項(xiàng)。
通過運(yùn)行hbase org.apache.hadoop.hbase.PerformanceEvaluation 即可查看PE工具支持的測試項(xiàng)。
2.2 HiBench
HiBench是Intel發(fā)布的一個(gè)大數(shù)據(jù)性能測試套件,包括HDFS、Mapreduce、SQL、網(wǎng)頁搜索以及機(jī)器學(xué)習(xí)等性能測試。支持的測試條目比較全面。
比如最常用的WordCount測試,通過以下命令即可完成測試:
#cd ./HiBench/wordcount
#./conf/configure.sh
#./bin/prepare.sh
#./bin/run.sh
2.3 YCSB
YCSB(Yahoo Cloud Serving Benchmark)是YAHOO發(fā)布的一款開源通用性能測試工具,適用于Hbase等NoSQL組件。
YCSB在命令行中直接可以設(shè)置線程數(shù)、讀寫比例等,可以提供較為詳細(xì)的測試結(jié)果。
2.4 BigDataBench
BigDataBench[3]是由中科院計(jì)算所研發(fā)的一款開源性能測試套件,是國內(nèi)大數(shù)據(jù)組織大數(shù)據(jù)聯(lián)盟(www.dca.org.cn)推薦的大數(shù)據(jù)性能測試工具。大數(shù)據(jù)聯(lián)盟(DCA,Data Center Alliance)同時(shí)配套發(fā)布的還有大數(shù)據(jù)性能測試基準(zhǔn)要求及方法[3]。
BigDataBench整合多種測試工具的優(yōu)點(diǎn),幾乎覆蓋所有組件,可以準(zhǔn)備文本、圖像、數(shù)據(jù)庫等多種數(shù)據(jù),實(shí)現(xiàn)端到端的性能測試[4]。
由于大數(shù)據(jù)聯(lián)盟的權(quán)威性,幾乎國內(nèi)全部大數(shù)據(jù)廠商都遵循大數(shù)據(jù)聯(lián)盟的測試工具及測試要求,并參加了大數(shù)據(jù)聯(lián)盟組織的測試。本性能測試自動(dòng)化系統(tǒng)也主要是基于BigDataBench工具。
3 大數(shù)據(jù)平臺性能測試自動(dòng)化實(shí)現(xiàn)
大數(shù)據(jù)平臺性能測試自動(dòng)化系統(tǒng)主要實(shí)現(xiàn)部署自動(dòng)化,測試數(shù)據(jù)準(zhǔn)備自動(dòng)化,性能負(fù)載運(yùn)行自動(dòng)化以及數(shù)據(jù)展示自動(dòng)化。
整個(gè)自動(dòng)化測試過程主要包括版本部署、運(yùn)行狀態(tài)檢查、數(shù)據(jù)準(zhǔn)備、測試腳本運(yùn)行、結(jié)果收集展示及環(huán)境清理幾個(gè)步驟。
在自動(dòng)化測試中,版本部署部分通過調(diào)用Node.js來模擬瀏覽器的相關(guān)操作。準(zhǔn)備數(shù)據(jù)及運(yùn)行腳本部分,通過調(diào)用預(yù)先編寫的相關(guān)Shell腳本來按測試方案配置并運(yùn)行BigDataBench的相關(guān)測試命令,同時(shí)采用Nmon工具來監(jiān)控主機(jī)CPU和內(nèi)存利用率以及I/O性能指標(biāo),通過Grafana展示結(jié)果數(shù)據(jù)[5,6]。具體流程如圖1所示。
典型的運(yùn)行測試負(fù)載腳本示例如下:
#!/bin/bash
#Benchmarks Workload:sort,grep,wordcount.
... ...
if [ ! -e $HAOOP ]; then
echo "Can't find hadoop in $HADOOP, exiting"
exit 1
fi
WORK_DIR=`pwd1.
algorithm=( Wordcount TeraSort NaiveBayes Pagerank Kmeans HiveQuery NoSQL)
if [ -n "$1" ]; then
choice=$1
else
... ...
Workloadtype=${algorithm[$choice-1]}
if [ "x$Workloadtype' == "xWordcont" ]; then
cd $(WORK_DIR)/Wordcount
./run_Wordcount.sh
if [ "x$Workloadtype' == "xTeraSort" ]; then
cd $(WORK_DIR)/TeraSort
./run_TeraSort.sh
... ...
if [ "x$Workloadtype' == "xNoSQL" ]; then
cd $(WORK_DIR)/NoSQL
./run_NoSQL.sh
fi
主機(jī)監(jiān)控腳本實(shí)現(xiàn)示例如下:
#!/bin/bash
DIR=`cd $(dirname 0);pwd`
if [ $# -eq 0 ];then
NUM=7000
else
NUM=$1
NMON_FILE=/home/mr/nmon_x86_64_rhe16
if [ -f $NMON_FILE ];then
NMON_CM="home/mr/nmon_x86_64_rhe16 -f -t -s 30 -c $NUM"
... ...
fi
最終通過Grafana系統(tǒng)展示測試結(jié)果,包括主機(jī)性能監(jiān)控指標(biāo),各測試負(fù)載結(jié)果數(shù)據(jù),各版本橫向測試結(jié)果對比,效果如圖2所示。
4 結(jié)語
本文在大數(shù)據(jù)平臺研發(fā)過程中運(yùn)用本系統(tǒng)來保障性能測試,取得了較好效果。首先確保了各版本性能測試環(huán)境、數(shù)據(jù)、方法和測試標(biāo)準(zhǔn)的一致性,并大幅提高了工作效率,同時(shí)做到7×24小時(shí)不間斷運(yùn)行。在實(shí)際應(yīng)用中發(fā)現(xiàn),原來需要4~5天的人工性能測試工作可以縮短到2天之內(nèi)由測試自動(dòng)化系統(tǒng)來完成。
由本性能自動(dòng)化測試系統(tǒng)保障的大數(shù)據(jù)平臺在大數(shù)據(jù)聯(lián)盟組織的性能測試中,取得了排名前列的成績。其中NoSQL測試項(xiàng)中的“Write”(讀)操作和“Scan”(掃描)兩項(xiàng)操作測試指標(biāo)排名第一。
如何加強(qiáng)基本組件的性能測試,比如生成恰當(dāng)?shù)臏y試輸入數(shù)據(jù),實(shí)現(xiàn)應(yīng)用端到端的測試,同時(shí)擴(kuò)充Spark、Kafka、Storm等新增組件的性能測試套件并整合其它優(yōu)秀性能測試工具,將是后續(xù)研究的方向。
參考文獻(xiàn):
[1] 朱葉青,牛德姣,蔡濤,等.不同網(wǎng)絡(luò)環(huán)境下大數(shù)據(jù)系統(tǒng)的測試與分析[J].江蘇大學(xué)學(xué)報(bào):自然科學(xué)版,2016(4):429-437.
[2] 張新玲,顏秉珩.Hadoop平臺基準(zhǔn)性能測試研究[J].軟件導(dǎo)刊,2015(1):30-32.
[3] 陳凱,魏凱,周曉敏.大數(shù)據(jù)平臺基準(zhǔn)測試標(biāo)準(zhǔn)化思考 [J].電信網(wǎng)技術(shù),2013(2):14-17.
[4] 詹劍鋒,高婉鈴,王磊,等.BigDataBench:開源的大數(shù)據(jù)系統(tǒng)評測基準(zhǔn)[J].軟件學(xué)報(bào),2016(1):196-211.
[5] 姜春宇,孟苗苗.大數(shù)據(jù)基準(zhǔn)測試流程與測試工具[J].信息通信技術(shù),2014(6):43-46.
[6] 林中明,李文敬.基于Hadoop的Web用戶識別與新聞智能推薦算法研究[J].軟件導(dǎo)刊,2016,15(5):27-29.
(責(zé)任編輯:孫 娟)