尤元建+吴洪学
摘 要:目前,越来越多的行业认识到大数据会带来新一轮的革命,而Apache Hadoop项目则是目前大数据平台应用的事实标准。各行业在建设大数据平台时,除功能外,性能指标也是考虑的重要因素。目前大数据平台性能评测工具多样,测试过程耗时、繁琐。鉴于此,讨论建设基于BigDataBench的Hadoop2.5大数据平台性能测试自动化系统,既提高工作效率,又减少人为操作差异化化,实现版本间性能数据自动对比,保证了测试质量和数据准确性。同时对自动化测试工具的演进方向进行了规划。
关键词:Hadoop;大数据平台;自动化测试;性能测试
DOIDOI:10.11907/rjdk.162030
中图分类号:TP302
文献标识码:A文章编号:1672-7800(2016)012-0016-3
0 引言
信息爆炸时代带来了信息数量的级数级增长,各行业也越来越认识到对大数据的掌控和分析能力会是未来竞争力的核心。行业决策也超越了以前依靠抽样调查的阶段,转而依靠大数据进行全面分析支持。
Apache Hadoop是对Google的GFS(Google File System)BigTable的一个开源实现,具有高扩展性、高效性、高容错性、低成本以及易于虚拟化等特性,是目前行业事实的应用标准[1]。Apache Hadoop大数据生态圈核心包括HDFS、Zookeeper、Yarn、Hbase、Hive、Impala等应用。
除功能外大数据平台性能处理能力是评测大数据平台的重要指标之一。目前,大数据平台性能测试存在的问题主要有:开源版本更换较快,需要频繁更换版本; 测试条目较多,场景比较复杂、繁琐,手工操作容易出错或不准确; 整个测试过程持续时间长。本文基于BigDataBench工具和Apache Hadoop2.5进行大数据平台性能测试自动化研究,尝试解决上述问题。
1 大数据平台性能测试内容
经典的大数据平台组件性能测试项主要包括HDFS的读写、Mapreduce的执行情况、NoSQL的数据库能力等[2],如表1所示。
以上测试项覆盖了I/O测试、I/O密集型、计算密集型及混合类型测试条目,涉及文本、图和表等输入数据。
2 大数据平台性能测试工具
在性能测试中,测试工具支持必不可少,目前除Apache Hadoop自带工具外,还有企业或组织发布了第三方测试工具。一般测试工具包括测试数据生成、负载运行和报告生成三大功能。
2.1 Apache Hadoop自带工具
Apache Hadoop自带工具主要包括TestDFSIO、Sort和PE(PerformanceEvaluation),工具简单、易用。TestDFSIO 主要用于HDFS基准性能测试,Sort工具用于Mapreduce负载,PerformanceEvaluation工具主要用于Hbase性能测试。
通过运行hadoop jar hadoop-test.jar即可查看所支持的测试项。
通过运行hbase org.apache.hadoop.hbase.PerformanceEvaluation 即可查看PE工具支持的测试项。
2.2 HiBench
HiBench是Intel发布的一个大数据性能测试套件,包括HDFS、Mapreduce、SQL、网页搜索以及机器学习等性能测试。支持的测试条目比较全面。
比如最常用的WordCount测试,通过以下命令即可完成测试:
#cd ./HiBench/wordcount
#./conf/configure.sh
#./bin/prepare.sh
#./bin/run.sh
2.3 YCSB
YCSB(Yahoo Cloud Serving Benchmark)是YAHOO发布的一款开源通用性能测试工具,适用于Hbase等NoSQL组件。
YCSB在命令行中直接可以设置线程数、读写比例等,可以提供较为详细的测试结果。
2.4 BigDataBench
BigDataBench[3]是由中科院计算所研发的一款开源性能测试套件,是国内大数据组织大数据联盟(www.dca.org.cn)推荐的大数据性能测试工具。大数据联盟(DCA,Data Center Alliance)同时配套发布的还有大数据性能测试基准要求及方法[3]。
BigDataBench整合多种测试工具的优点,几乎覆盖所有组件,可以准备文本、图像、数据库等多种数据,实现端到端的性能测试[4]。
由于大数据联盟的权威性,几乎国内全部大数据厂商都遵循大数据联盟的测试工具及测试要求,并参加了大数据联盟组织的测试。本性能测试自动化系统也主要是基于BigDataBench工具。
3 大数据平台性能测试自动化实现
大数据平台性能测试自动化系统主要实现部署自动化,测试数据准备自动化,性能负载运行自动化以及数据展示自动化。
整个自动化测试过程主要包括版本部署、运行状态检查、数据准备、测试脚本运行、结果收集展示及环境清理几个步骤。
在自动化测试中,版本部署部分通过调用Node.js来模拟浏览器的相关操作。准备数据及运行脚本部分,通过调用预先编写的相关Shell脚本来按测试方案配置并运行BigDataBench的相关测试命令,同时采用Nmon工具来监控主机CPU和内存利用率以及I/O性能指标,通过Grafana展示结果数据[5,6]。具体流程如图1所示。
典型的运行测试负载脚本示例如下:
#!/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
主机监控脚本实现示例如下:
#!/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系统展示测试结果,包括主机性能监控指标,各测试负载结果数据,各版本横向测试结果对比,效果如图2所示。
4 结语
本文在大数据平台研发过程中运用本系统来保障性能测试,取得了较好效果。首先确保了各版本性能测试环境、数据、方法和测试标准的一致性,并大幅提高了工作效率,同时做到7×24小时不间断运行。在实际应用中发现,原来需要4~5天的人工性能测试工作可以缩短到2天之内由测试自动化系统来完成。
由本性能自动化测试系统保障的大数据平台在大数据联盟组织的性能测试中,取得了排名前列的成绩。其中NoSQL测试项中的“Write”(读)操作和“Scan”(扫描)两项操作测试指标排名第一。
如何加强基本组件的性能测试,比如生成恰当的测试输入数据,实现应用端到端的测试,同时扩充Spark、Kafka、Storm等新增组件的性能测试套件并整合其它优秀性能测试工具,将是后续研究的方向。
参考文献:
[1] 朱叶青,牛德姣,蔡涛,等.不同网络环境下大数据系统的测试与分析[J].江苏大学学报:自然科学版,2016(4):429-437.
[2] 张新玲,颜秉珩.Hadoop平台基准性能测试研究[J].软件导刊,2015(1):30-32.
[3] 陈凯,魏凯,周晓敏.大数据平台基准测试标准化思考 [J].电信网技术,2013(2):14-17.
[4] 詹剑锋,高婉铃,王磊,等.BigDataBench:开源的大数据系统评测基准[J].软件学报,2016(1):196-211.
[5] 姜春宇,孟苗苗.大数据基准测试流程与测试工具[J].信息通信技术,2014(6):43-46.
[6] 林中明,李文敬.基于Hadoop的Web用户识别与新闻智能推荐算法研究[J].软件导刊,2016,15(5):27-29.
(责任编辑:孙 娟)