网站首页 > 开源技术 正文
随着开源Hapdoop、Map/Reduce、Spark、HDFS、HBASE等技术的商用化,大数据管理技术得到了突飞猛进的发展。
利用hadoop自带基准测试工具包进行集群性能测试,测试平台为CDH5.16上hadoop2.6版本。
目录 /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/
使用TestDFSIO、mrbench、nnbench、Terasort 、sort 几个使用较广的基准测试程序。
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar
一、TestDFSIO
TestDFSIO用于测试HDFS的IO性能,使用一个MapReduce作业来并发地执行读写操作,每个map任务用于读或写每个文件,map的输出用于收集与处理文件相关的统计信息,reduce用于累积统计信息,并产生summary。
1. 测试HDFS写性能
测试内容:向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
查看结果:
cat /tmp/TestDFSIO_results.log
2. 测试HDFS读性能
测试内容:读取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. 清除测试数据
sudo -uhdfs hadoop jar \
/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-client-jobclient-tests.jar \
TestDFSIO -clean
二、nnbench
nnbench用于测试NameNode的负载,它会生成很多与HDFS相关的请求,给NameNode施加较大的压力。这个测试能在HDFS上模拟创建、读取、重命名和删除文件等操作。
测试使用10个mapper和5个reducer来创建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会多次重复执行一个小作业,用于检查在机群上小作业的运行是否可重复以及运行是否高效。
测试运行一个作业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任务和Reduce任务数量,对Hadoop性能的影响。实验数据由程序中的teragen程序生成,数量为1G和10G。
一个TeraSort测试需要按三步:
1. TeraGen生成随机数据
2. TeraSort对数据排序
3. TeraValidate来验证TeraSort输出的数据是否有序,如果检测到问题,将乱序的key输出到目录
1. TeraGen生成随机数,将结果输出到目录/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排序,将结果输出到目录/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验证,如果检测到问题,将乱序的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是一款面向商品零售业的决策支持系统测试基准,它定义了8张表,22个查询,遵循SQL92。TPC-H基准的数据库模式遵循第三范式,叶晓俊教授等学者认为“它的数据表数据特征单一(如数据不倾斜) ,其数据维护功能仅仅限制了潜在的对索引的过度使用,而没有测试DBMS 执行真实数据维护操作——数据提取、转换和加载(ETL) 功能的能力”。同时,新兴的数据仓库开始采用新的模型,如星型模型、雪花模型。TPC-H已经不能精准反映当今数据库系统的真实性能。为此,TPC组织推出了新一代的面向决策应用的TPC-DS 基准。
2. TPC-DS
TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。
TPC-DS的这个特点跟大数据的分析挖掘应用非常类似。Hadoop等大数据分析技术也是对海量数据进行大规模的数据分析和深度挖掘,也包含交互式联机查询和统计报表类应用,同时大数据的数据质量也较低,数据分布是真实而不均匀的。因此TPC-DS成为客观衡量多个不同Hadoop版本以及SQL on Hadoop技术的最佳测试集。这个基准测试有以下几个主要特点:
- 一共99个测试案例,遵循SQL’99和SQL 2003的语法标准,SQL案例比较复杂
- 分析的数据量大,并且测试案例是在回答真实的商业问题
- 测试案例中包含各种业务模型(如分析报告型,迭代式的联机分析型,数据挖掘型等)
- 几乎所有的测试案例都有很高的IO负载和CPU计算需求
3. TPC-DS认证现状
TPC-DS以其高标准、高要求得到大家的广泛认知,理应得到广泛的应用,但是到目前为止还没有任何厂商得到TPC官方的认证。究其原因,本文认为:
传统的数据库厂商,DBMS系统比较成熟,SQL的支持也相当完善,但是其分布式、并行处理能力欠缺,导致其性能很差。所以传统的厂商不愿意发布测试结果。新型的计算模型如Map/Reduce、spark,具有较好的并行处理能力,但是SQL的兼容性比较差,如HiveSQL、SparkSQL只支持40个SQL,从而也无法发布TPC-DS测试报告。尽管如此,各厂商还是通过非TPC官方的途径发布TPC-DS的部分测试结果,以展现其在性能方面的提升。由此可见大家对TPC-DS的程接受度。
大数据评测基准用于公平、客观地评测不同大数据库产品/平台的功能和性能,对人们选择合适的大数据分析决策系统具有重要的参考价值。随着国内外各代表性的Hadoop发行版厂商以TPC-DS为标准测评产品,TPC-DS也就逐渐成为了业界公认的大数据系统测试基准。但是随着大数据应用在各行各业的发展,测试基准也需不断与时俱进。大数据测试基准仍然面临着诸多挑战,还需要政府、学术界和工业界的紧密合作。
- 上一篇: 大神总结,超全的运维工具包,拿走不谢
- 下一篇: 应用PMDK修改WAL操作使之适配持久化内存
猜你喜欢
- 2024-10-13 加奇迪斯飞往伦敦去找萨里 AC米兰仍将使用巴卡约科
- 2024-10-13 如何从 900 万张图片中对 600 类照片进行分类? | 技术头条
- 2024-10-13 使用 BenchBot 和 NVIDIA Isaac Sim 简化机器人技术
- 2024-10-13 如何在GO中写出准确的基准测试(如何在go中写出准确的基准测试结果)
- 2024-10-13 检索MongoDB的日志为何存在大量的查询报错-爱可生
- 2024-10-13 技术分享 | MongoDB 一次排序超过内存限制的排查
- 2024-10-13 map 和 switch 如何选?match 又是什么?
- 2024-10-13 后端开发都应该了解点接口的压力测试(Apache Bench版)
- 2024-10-13 基于FPGA的功能仿真验证——TestBench
- 2024-10-13 用正确方法对度量学习算法进行基准测试
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)