0%

HiBench 性能测试工具使用方法

本文主要介绍了大数据性能测试工具 HiBench 的基本概念,配置文件,介绍了 Spark 的 Teasort 和 WordCount 性能测试,并提供了测试脚本。

简介

HiBench是一个大数据基准套件,可帮助评估速度、吞吐量和系统资源利用率方面的不同大数据框架。 它包含一组Hadoop,Spark和streaming测试模式,包括Sort,WordCount,TeraSort,Repartition,Sleep,SQL,PageRank,Nutch indexing,Bayes,Kmeans,NWeight和增强的DFSIO等。它还包含一些用于Spark流的流工作负载 ,Flink,Storm和Gearpump。

源码地址

Intel-bigdata/HiBench: HiBench is a big data benchmark suite.
https://github.com/Intel-bigdata/HiBench

编译文件

这里提供编译好的文件,下载地址:
https://pan.baidu.com/s/11X_SxFyQLxrT45wm6XMoXg
提取码:zz75

目录结构

  • autogen:主要用于生成测试数据的源码目录
  • bin:测试脚本放置目录
  • common:公共依赖源码目录
  • conf:配置文件目录(Hibench/Hadoop/Spark等配置文件存放目录)
  • docker:HiBench的docker镜像
  • flinkbench:Flink框架源码目录
  • gearpumpbench:gearpumpbench框架源码目录
  • hadoopbench:hadoop框架源码目录
  • sparkbench:spark框架的源码目录
  • stormbench:storm框架的源码目录

配置文件

hibench.conf

主要配置HiBench的运行参数及HiBench各个模块的home环境配置。

其中需要注意的参数为:

  • hibench.scale.profile:主要配置HiBench测试的数据规模,有tiny, small, large, huge, gigantic 和bigdata六个级别;
  • hibench.default.map.parallelism:测试MapReduce时是Mapper数量,测试Spark时是分区数;
  • hibench.default.shuffle.parallelism:测试MapReduce时是Reduce数量测试Spark时是shuffle分区数。

数据规模

数据规模对应的数据量在HiBench-master/conf/workloads/micro目录中设置

dfsioe.conf

数据规模 读文件数 读文件单个大小(MB) 写文件数 写文件单个大小(MB)
tiny 16 1 16 1
small 32 10 32 10
large 64 10 64 10
huge 256 100 256 100
gigantic 512 400 512 400
bigdata 2048 1000 2048 1000

DFSIOE测试用例通过定义读或写的文件数和文件的大小来指定测试数据量的规模,如果需要自定义测试规模则修改文件数和文件的大小即可,文件大小以MB为单位。

terasort.conf

数据量配置以条数为单位,每条数据约100byte

比如,定义100G数据,则应设置为10010241024*1024/100=1073741824
设置数据,既可修改原来的数据,也可以自定义数据规模

wordcount.conf
数据量配置以byte为单位

比如,要设置100G数据量,为10010241024*1024=107374182400

hadoop.conf.template

hadoop.conf.template为测试Hadoop时的配置模板,测试Hadoop时需要重命名为hadoop.conf

1
cp hadoop.conf.template hadoop.conf


主要修改hibench.hadoop.home、hibench.hdfs.master和hibench.hadoop.release三个参数,过HDFS启用HA模式,则hibench.hdfs.master设置为HA对应的访问方式。

spark.conf.template

spark.conf.template为Spark测试时的配置文件,测试Spark时需要重命名为spark.conf

1
cp spark.conf.template spark.conf


根据实际情况设置hibench.spark.home,hibench.spark.master为根据spark是standalone模式还是Yarn模式进行设置。当hibench.spark.master为yarn-client时,通过Yarn的ResourceManager的UI界面查看资源信息,然后设置hibench.yarn.executor.num、hibench.yarn.executor.cores、spark.executor.memory、spark.driver.memory进行性能调优。

Spark 性能测试

Teasort

这里以最小的数据量 tiny 为例介绍 Spark 的 Teasort 性能测试步骤。

1
2
3
cd /home/erik/hibench/
unzip HiBench-master.zip
chmod -R 777 HiBench-master

修改配置文件

1
2
3
4
cd HiBench-master/conf/
cp hadoop.conf.template hadoop.conf

vim hadoop.conf

1
2
cp spark.conf.template spark.conf
vim spark.conf

修改数据量

1
vim hibench.conf

1
2
cd workloads/micro/
vim terasort.conf

生成数据

执行

1
2
3
# 我的 HiBench 存放目录为:/home/erik/hibench,根据自己情况修改切换路径
cd /home/erik/hibench/HiBench-master/bin/workloads/micro/terasort/prepare
sh prepare.sh

查询数据

1
hadoop fs -ls /HiBench/Terasort/Input

1
hadoop fs -du -h /HiBench/Terasort/Input

测试性能

1
2
3
4
# 我的 HiBench 存放目录为:/home/erik/hibench,根据自己情况修改切换路径
su spark
cd /home/erik/hibench/HiBench-master/bin/workloads/micro/terasort/spark
sh run.sh

查看测试报告

1
2
cd /home/erik/hibench/HiBench-master/report
cat hibench.report



持续时间(s) 吞吐量(b/s) 吞吐量/节点

WordCount

Spark 的 WordCount 性能测试步骤与 Terasort 步骤类似,都需要修改配置、修改数据量、生成数据、执行测试。

修改配置文件

与 Terasort 测试时一样。

修改数据量

如果需要修改数据量,可以到workloads/micro/wordcount.conf 中修改成自己想要的数据量。

生成数据

生成 WordCount 的测试数据,需要执在 bin/workloads/micro/wordcount/prepare 目录中执行 sh prepare.sh

执行测试

bin/workloads/micro/terasort/spark 目录中执行 sh run.sh

1
cd /home/erik/hibench/HiBench-master/bin/workloads/micro/wordcount/spark

查看报告

1
2
cd /home/erik/hibench/HiBench-master/report
cat hibench.report

测试脚本

这里提供一键测试脚本,仅供参考,主要测试 Spark 和 MR 的 Trasort 和 WordCount 在不同数据量下的测试,每种数据量执行三次。

需要提前设置好配置文件,主要包括 conf 文件夹的 spark.conf 和 hadoop.conf,以及 conf/workloads/micro/文件夹中的 terasort.conf 和 wordcount.conf 的数据量大小。脚本中的 hibench_home 根据自己的目录位置进行修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#/bin/bash

# HiBench 目录
hibench_home=/home/erik/hibench/HiBench-master

# 数据量类型
datasize_type=("tiny" "small" "large" "huge" "gigantic" "bigdata")
#datasize_type=("tiny")

echo '====================Start execute hibench test ======================'

for datasize in ${datasize_type[*]}
do

# chance datasize
echo 'Start change datasize ...'
hibench_conf_path=$hibench_home/conf/hibench.conf
text="hibench.scale.profile $datasize"
sed -i "3c $text" $hibench_conf_path

echo 'Start clean teasort data ...'
hadoop fs -rm -r /HiBench/Terasort/Input

echo 'Create teasort data ...'
sh $hibench_home/bin/workloads/micro/terasort/prepare/prepare.sh

echo 'Start clean wordcount data ...'
hadoop fs -rm -r /HiBench/Wordcount/Input

echo 'Create Wordcount data ...'
sh $hibench_home/bin/workloads/micro/wordcount/prepare/prepare.sh

for j in {1..3}
do
echo '====================Start execute hibench datasize: $datasize, time:$j ======================'
echo 'Run sprak teasort test ...'
sh /$hibench_home/bin/workloads/micro/terasort/spark/run.sh

sleep 10
echo 'Run MR teasort test ...'
sh /$hibench_home/bin/workloads/micro/terasort/hadoop/run.sh

echo 'Run sprak wordcount test ...'
sh /$hibench_home/bin/workloads/micro/wordcount/spark/run.sh

sleep 10
echo 'Run MR wordcount test ...'
sh /$hibench_home/bin/workloads/micro/wordcount/hadoop/run.sh
done
done

参考资料

[Hadoop] 使用DFSIO测试集群I/O性能_mryqu_新浪博客
http://blog.sina.com.cn/s/blog_72ef7bea0102vr44.html

linux下的缓存机制buffer、cache、swap - 运维总结 - 散尽浮华 - 博客园
https://www.cnblogs.com/kevingrace/p/5991604.html

TestDFSIO基准测试方法介绍_湖南频道_凤凰网
http://hunan.ifeng.com/a/20190613/7496675_0.shtml

如何使用HiBench进行基准测试 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1158310