【Hadoop】37-利用基准评测程序测试Hadoop集群

集群是否已被正确建立?这个问题最好通过实验来回答:运行若干作业,并确信获得了预期结果。基准评测程序能获得满意的测试结果,用户可以拿结果数据和其他集群做比较,以检测新集群是否达到预期效果。此外,还可以据此调整集群设置以优化整体性能。这点一般通过监控系统实现(参见11.2节),用户可以监测集群中的资源使用情况。
为了获得最佳评测结果,最好不要在运行基准评测程序时还同时运行其他任务。实际上,在集群人役之前进行评测最为合适,此时用户尚未对集群有依赖性。旦用户已经依赖集群执行常规性作业,想要找到集群完全空闲的时间就非常困难了(除非和所有其他用户协商一个停止服务的时间段)。总而言之,基准评测程序最好在此之前就执行。
实践表明,硬盘驱动器故障是新系统最常见的硬件故障。通过运行含有高强度I/O操作的基准砰测程序,例如即将提到的基准i平测程序,就能在系统正式上线前对集群做“烤机”测试。

1、Hadoop基准评测程序

Hadoop自带若干基准i平测程序,安装开销小、运行方便。基准评测程序打包为一个名为tests.jar的文件,经无参数解压缩之后,就可以获取文件列表和说明文档:

%hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-*-tests.jar

如果不指定参数,大多数基准测试程序都会显示具体用法。示例如下:
%hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-*-tests.jar TestDFSIO
TestDFSIO.1·7
Missing arguments.
Usage:TestDFSIO [genericOptions] -read [-random丨-backward|
-skip[-skipSize Size]] | -write | -append丨-clean [ -compression codecClassName]

[-nrFiles N] [-size Size[B|KB|MBlGB|TB]] [-resFile resultFileName]
[-bufferSize Bytes] [-rootDir]

1.1、使用TeraSort来评测HDFS

Hadoop自带一个名为TeraSort的Mapreduce程序,该程序对输人进行全排序。由于全部输人数据集通过shuftle传输,所以TeraSort对于同时评测HDFS和MapReduce非常有用。测评分为三步:生成随机数据、执行排序和验证结果。
首先,使用teragen生成随机数据(可以在示例JAR文件中找到,而不是测试用JAR文件)。teragen运行一个仅有map任务的作业,可以生成指定行数的二进制数据。每一行是100字节长,这样使用1000个map任务可生成ITB的数据,执行命令如下(10t是10trillion的缩写):

%hadoop jar $HADOOP_HOME/share/hadOOP/mapreduce/hadoop-mapreduce-examples.*.jar \ 

teragen -Dmapreduce.job.maps=1000 10t random-data

接下来,运行Terasort:

%hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*..jar \ 

terasort random-data sorted-data

排序的总执行时间会是用户感兴趣的度量值。此外,通过web界面(http://resource-manager-host:8088/)来观察作业的进度更有意义,这样可以了解作业在各个阶段的开销。在此基础上,可以练习如何调整系统参数(参见6,6节对作业调优的讨论)。
最后,需要验证在“文件中的数据是否已经排好序:

%hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar \
teravalidate sorted-data report

该命令运行了一个小的MapReduce作业,对排序后的数据执行一系列检查,以验证排序结果是否正确。任何错误都可以在输出文件report/part-r-00000中找到。

1.2、其他基准评测程序

Hadoop的基准i平测程序有很多,以下几种最常用。

  • TestDFSIO主要用于测试HDFS的I/O性能。该程序使用一个MapReduce作业作为并行读/写文件的一种便捷途径。
  • MRBench使用mrbench会多次运行一个小型作业。与TeraSort相互映衬,该基准的主要目的是检验小型作业能否快速响应。
  • NNBench(使用nnbench)测试namenode硬件的加载过程。
  • Gridmix而是一个基准平测程序套装。通过模拟一些真实常见的数据访问模式,Gridmix能逼真地为一个集群的负载建模。用户可参阅分发包中的文档来了解如何运行Gridmix。
  • SWIM(StatisticaI WorkIoad lnjector for MapReduce),是一个真实的MapReduce工作负载库,可以用来为被测系统生成代表性的测试负载。
  • TPCx-HS,基于TeraSort的标准基准评测程序,来自事务处理性能委员会(Transaction Processing Performance Council)。
     

2、用户作业

出于集群性能调优的目的,最好包含若干代表性强、使用频繁的作业。这样的话,调优操作可以更有针对性,而不只是对通用场景进行调优。但如果待测集群是用户的第一个Hadoop集群,且还没有任何作业,则Gridmix或SWIM都不失为一个好的评测方案。
如果想把自己的作业作为基准评测时,用户还需要为作业选择数据集合。这样的话,不管运行多少次,作业始终都基于相同的数据集合,便于分析、比较性能变迁。当新建或升级集群时,使用同一数据集合还可以比较新旧集群的性能。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值