# one row of terasort data is 100B size, we are testing with 5GB data, 50*1024*1024*1024/100=538968060
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teragen -Dmapred.map.tasks=100 538968060 terasort/tera1-input
查看TeraGen生成的数据
hadoop fs -ls -R /user/hadoop/terasort/
执行TeraSort排序操作
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar terasort -Dmapred.reduce.tasks=50 terasort/tera1-input terasort/tera1-output
校验测试结果
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teravalidate /user/hadoop/terasort/tera1-output /user/hadoop/terasort/tera1-validate
最近在做Hadoop在x86集群上和ARM64集群上的性能测试和对比,寻找可能存在的性能瓶颈点,并尝试寻找性能优化方式,于是,研究和尝试了Hadoop几种基本的benchmark测试方法,这里做一个笔记。
0. 环境准备
Hadoop自带了很多基准测试工具,如
TestDFSIO
TeraSort
NNBench
,MRBench
, 这些基准测试工具大多数都不需要什么外部依赖,可以搭建一个简单的单节点Hadoop环境来测试,Hadoop单节点环境搭建和配置可以参考部署一个单节点Hadoop环境1. TestDFSIO工具
TestDFSIO是Hadoop自带的一个工具,是Hadoop
hadoop-mapreduce-client
module下面提供的一个jar包工具,顾名思义,该工具主要用于测试DFS I/O性能,使用一个MapReduce作业来并发地执行读写操作,每个map任务用于读或写文件,map的输出用于收集与处理文件相关的统计信息,reduce用于累积统计信息,并产生summary,下面是该工具的一些基本用法:测试结果数据形式如下:
除此之外,TestDFSIO还有下列常见的读写测试:
2. TeraSort
TeraSort 是
hadoop-mapreduce-examples-*.jar
Jar包提供的一个测试工具,通过排序测试MR执行效率TeraGen
生成测试数据,这一步仅仅执行Map
的流程,生成排序输入数据3. nnbench
主要测试NameNode负载能力, nnbench用于测试NameNode的负载,他会产生很多余HDFS相关的请求,给NameNode施加较大的压力。这个测试能在hdfs上模拟创建,读取,重命名和删除文件等操作。
4. mrbench
mrbench会多次重复执行一个小作业,用于检查在机群上小作业的运行是否可重复以及运行是否高效
5. 第三方测试工具Hibench
Hibench 是Intel提供的一个开源的大数据基准测试工具,具体代码仓库在这里, 可以用来测试Hadoop、Spark、Flink等主流的开源大数据框架的性能。对于Hadoop来说,其实Hibench本身也是对于Hadoop自带的TeraSort、WordCount、Sleep基本测试工具的集成,方便于测试以及收集结果。 使用Hibench来执行Hadoop的基准测试也比较简单,具体可以参考Hibench的README
编译Hibench
配置Hibench在Hadoop集群中中跑测试
修改
conf/hadoop.conf
中hibench.hadoop.home
配置为Hadoop的安装目录,修改hibench.hdfs.master
为HDFS的访问地址,和Hadoop的etc/hadoop/core-site.xml
中fs.defaultFS
保持一致。运行Hadoop的基准测试,可以参考Hibench文档 对于所有Hadoop的测试,都需要先执行
prepare.sh
来产生测试数据其他测试场景配置 Hibench
conf/workloads/micro/
目录下面是Hadoop相关的所有benchmark测试套的配置,和bin/workloads/micro/
目录下面的测试执行脚本一一对应。比如以wordcount.conf
为例:hibench.workload.datasize ${hibench.wordcount.${hibench.scale.profile}.datasize}
export for shell script
hibench.workload.input ${hibench.hdfs.data.dir}/Wordcount/Input hibench.workload.output ${hibench.hdfs.data.dir}/Wordcount/Output
和:
7. 其他
mapred-site.xml
中增加如下的配置,可以配置ZSTD为Map流程输出的压缩库,其他的压缩库配置类似history server
mapred --daemon start historyserver
然后,浏览器中打开http://114.119.186.123:19888/jobhistory