一、测试条件
集群完全安装配置后,应立即开始基准测试。基准测试时集群里不应该运行其他一切任务。
二、测试目标
1. 硬盘故障:新系统最常见的故障。可以通过运行高强度的IO基准测试程序集中测试。例如TestDFSIO
2. MapReduce的性能
三、测试方法
1、TestDFSIO基准测试HDFS
测试顺序应该是先写测试后读测试
写测试:
使用10个map任务写10个文件,每个500m。
hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
在运行的最后,结果被写入控制台并记录到当前路径TestDFSIO_results.log 。
数据默认写入 /benchmarks/TestDFSIO目录下
读测试:
hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -read-nrFiles 10 -fileSize 1000
清除测试数据:
hadoop jar $HADOOP_HOME/hadoop-test-*.jar TestDFSIO -clean
2、用sort排序测试MapReduce
Hadoop自带一个部分排序的程序。这对测试整个MapReduce系统很有用,因为整个输入数据集都会通过洗牌传输至reducer。一共三个步骤:生成一些随机的数据,执行排序,然后验证结果。
首先我们通过使用RandomWriter生成一些随机的数据。它以每个节点10个map的方式运行一个MapReduce作业,并且每一个map生成近似10GB的随机二进制数据,带有不同长度的键和值。
hadoop jar hadoop-examples-0.20.2-cdh3u1.jar randomwriter random-data
也可以指定配置如多少个map,每个map生成数据大小等信息
如生成32G数据可以如下配置,
执行命令如下:hadoop-0.20.2-cdh3u4$ hadoop jar hadoop-examples-0.20.2-cdh3u4.jar randomwriter -conf ./random_conf.xml random32
<configuration>
<property>
<name>test.randomwriter.maps_per_host</name>
<value>32</value>
</property>
<property>
</property>
<value>32</value>
<name>test.randomwriter.maps_per_host</name>
<property>
<name>test.randomwrite.bytes_per_map</name>
<value>1073741824</value>
</property>
<property>
<name>test.randomwrite.min_key</name>
<value>10</value>
</property>
<property>
<name>test.randomwrite.max_key</name>
<value>1000</value>
</property>
<property>
<name>test.randomwrite.min_value</name>
<value>0</value>
</property>
<property>
<name>test.randomwrite.max_value</name>
<value>20000</value>
</property>
</configuration>
选项的默认值
Name | Default Value | Description |
test.randomwriter.maps_per_host | 10 | Number of maps/host |
test.randomwrite.bytes_per_map | 1073741824 | Number of bytes written/map |
test.randomwrite.min_key | 10 | minimum size of the key in bytes |
test.randomwrite.max_key | 1000 | maximum size of the key in bytes |
test.randomwrite.min_value | 0 | minimum size of the value |
test.randomwrite.max_value | 20000 | maximum size of the value |
1. 用TestDFSIO基准测试HDFS
Hadoop带有一些基准测试程序,基准测试程序被打包在测试程序JAR文件中。其中,TestDFSIO用来测试HDFS的I/O性能。大多数新系统硬件的故障都是硬盘故障。通过运行I/O密集型基准测试,可以对集群的使用进行热身。它通过使用MapReduce作业来完成测试作为并行读写文件的便捷方法。每个文件的读写都在单独的map任务中进行,并且map的输出可以用来收集统计刚刚处理过的文件。这个统计数据在reduce中累加起来得出一个汇总。以下命令写了10个文件,每个1000MB:
[root@slave1 hadoop-0.20.2]# hadoop jar hadoop-0.20.2-test.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
以下内容是TestDFSIO基准测试的运行结果,结果被写入控制台并同时记录在一个本地文件。
一、背景
由于以前没有细看Hadoop提供的测试工具,只是在关注hadoop本身的内容,所以很多的性能测试都忽略了。最近花了一周的时间准备做个性能测试,但是都是采用自己的方法得出的抽象值。今天看淘宝的博客,提到hadoop自带的测试工具,遂试了一把,记录一下,供以后参考。
二、使用
我做基准测试主要是用了hadoop-0.20.2-test.jar这个工具jar包。主要是做了I/O的测试。在网上也找了一些资料,抄抄谢谢记录如下:
DFSCIOTest
测试libhdfs中的分布式I/O的基准。Libhdfs是一个为C/C++应用程序提供HDFS文件服务的共享库。
DistributedFSCheck
文件系统一致性的分布式检查。
TestDFSIO
分布式的I/O基准。目前我就做了这个测试。输入参数:hadoop jar hadoop-0.20.2-test.jar TestDFSIO -write -nrFiles 10 -fileSize 1000,结果在同级目录下会有一个TestDFSIO_results.log,查看就可以了。完事记得执行hadoop jar hadoop-0.20.2-test.jar TestDFSIO -clean
clustertestdfs
对分布式文件系统的伪分布式测试。
dfsthroughput
测量HDFS的吞吐量。
filebench
SequenceFileInputFormat和SequenceFileOutputFormat的基准,这包含BLOCK压缩,RECORD压缩和非压缩的情况。TextInputFormat和TextOutputFormat的基准,包括压缩和非压缩的情况。
loadgen
通用的MapReduce加载产生器。
mapredtest
MapReduce作业的测试和检测。
mrbench
创建大量小作业的MapReduce基准。
nnbench
NameNode的性能基准。
testarrayfile
对有键值对的文本文件的测试。
testbigmapoutput
这是一个MapReduce作业,www.linuxidc.com它用来处理不可分割的大文件来产生一个标志MapReduce作业。
testfilesystem
文件系统读写测试。
testipc
Hadoop核心的进程间交互测试。
testmapredsort
用于校验MapReduce框架的排序的程序。
testrpc
对远程过程调用的测试。
testsequencefile
对包含二进制键值对的文本文件的测试。
testsequencefileinputformat
对序列文件输入格式的测试。
testsetfile
对包含二进制键值对文本文件的测试。
testtextinputformat
对文本输入格式的测试。
threadedmapbench
对比输出一个排序块的Map作业和输出多个排序块的Map作业的性能。
三、总结
1、输入hadoop jar hadoop-0.20.2-test.jar都会有一些提示帮助,不过建议还是看看源码,更清晰。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2012-03/56009.htm
~