liusheng / liusheng.github.io

Liusheng's blog
http://liusheng.github.io
5 stars 1 forks source link

Hadoop benchmark 基本工具和方法 #19

Open liusheng opened 4 years ago

liusheng commented 4 years ago

最近在做Hadoop在x86集群上和ARM64集群上的性能测试和对比,寻找可能存在的性能瓶颈点,并尝试寻找性能优化方式,于是,研究和尝试了Hadoop几种基本的benchmark测试方法,这里做一个笔记。

0. 环境准备

Hadoop自带了很多基准测试工具,如TestDFSIO TeraSort NNBench, MRBench, 这些基准测试工具大多数都不需要什么外部依赖,可以搭建一个简单的单节点Hadoop环境来测试,Hadoop单节点环境搭建和配置可以参考部署一个单节点Hadoop环境

1. TestDFSIO工具

TestDFSIO是Hadoop自带的一个工具,是Hadoophadoop-mapreduce-client module下面提供的一个jar包工具,顾名思义,该工具主要用于测试DFS I/O性能,使用一个MapReduce作业来并发地执行读写操作,每个map任务用于读或写文件,map的输出用于收集与处理文件相关的统计信息,reduce用于累积统计信息,并产生summary,下面是该工具的一些基本用法:

除此之外,TestDFSIO还有下列常见的读写测试:

#测试写数据,配置CodeC
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.4.0-SNAPSHOT-tests.jar TestDFSIO -write -size 100MB -nrFiles 100 -compression org.apache.hadoop.io.compress.ZStandardCodec

#测试追加写数据
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.4.0-SNAPSHOT-tests.jar TestDFSIO -write -append -size 100MB -nrFiles 100 -compression org.apache.hadoop.io.compress.ZStandardCodec

#正常的读操作
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.4.0-SNAPSHOT-tests.jar TestDFSIO -read -size 100MB -nrFiles 100 -compression org.apache.hadoop.io.compress.ZStandardCodec

#测试随机读数据B(不能加-compression参数)
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.4.0-SNAPSHOT-tests.jar TestDFSIO -read -random -size 100MB -nrFiles 100

#反向读(不能加-compression参数)
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.4.0-SNAPSHOT-tests.jar TestDFSIO -read -backward -size 100MB -nrFiles 100

#跳过指定size的数据读,(不能加-compression参数)
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.4.0-SNAPSHOT-tests.jar TestDFSIO -read -skip -skipSize 5GB -size 100MB -nrFiles 100 

2. TeraSort

TeraSort 是hadoop-mapreduce-examples-*.jar Jar包提供的一个测试工具,通过排序测试MR执行效率

3. nnbench

主要测试NameNode负载能力, nnbench用于测试NameNode的负载,他会产生很多余HDFS相关的请求,给NameNode施加较大的压力。这个测试能在hdfs上模拟创建,读取,重命名和删除文件等操作。

5. 第三方测试工具Hibench

Hibench 是Intel提供的一个开源的大数据基准测试工具,具体代码仓库在这里, 可以用来测试Hadoop、Spark、Flink等主流的开源大数据框架的性能。对于Hadoop来说,其实Hibench本身也是对于Hadoop自带的TeraSort、WordCount、Sleep基本测试工具的集成,方便于测试以及收集结果。 使用Hibench来执行Hadoop的基准测试也比较简单,具体可以参考Hibench的README

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

其中`hibench.scale.profile`为预定义好的不同datasize的测试场景,默认使用的是`tiny`的profile,可以通过修改`conf/hibench.conf`中的`hibench.scale.profile`来配置。
测试结果和详细日志可以在`report/wordcount/`目录下查看。

## 6. 其他Hadoop自带工具
Hadoop自带的测试工具主要由`hadoop-mapreduce-client-jobclient-*-tests.jar` 和`hadoop-mapreduce-examples-*.jar`两个Jar包提供,除了上述的几种提供了很多基准测试工具,包括`sleep`, `DFSCIOTest`, `filebench`等,可以通过下面的命令来查看

```shell
hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*-tests.jar

和:

hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar

7. 其他