Hibench是一个大数据 benchmark 套件,用来测试各种大数据框架的速度,吞吐量,系统资源利用率。
它支持的框架有:hadoopbench、sparkbench、stormbench、flinkbench、gearpumpbench。
hibench作为一个测试hadoop的基准测试框架,提供了对于hive:(aggregation,scan,join),排序(sort,TeraSort),大数据基本算法(wordcount,pagerank,nutchindex),机器学习算法(kmeans,bayes),集群调度(sleep),吞吐(dfsio),以及新加入5.0版本的流测试,是一个测试大数据平台非常好用的工具
它支持的框架有:hadoopbench、sparkbench、stormbench、flinkbench、gearpumpbench。
hibench包含几个hadoop的负载
micro benchmarks
Sort:使用hadoop randomtextwriter生成数据,并对数据进行排序。
Wordcount:统计输入数据中每个单词的出现次数,输入数据使用hadoop randomtextwriter生成。
TeraSort:输入数据由hadoop teragen产生,通过key值进行排序。
hdfs benchmarks
增强行的dfsio:通过产生大量同时执行读写请求的任务测试hadoop机群的hdfs吞吐量
web search bench marks
Nutch indexing:大规模收索引擎,这个是负载测试nutch(apache的一个开源搜索引擎)的搜索子系统,使用自动生成的web数据,web数据中的连接和单词符合zipfian分布(一个单词出现的次数与它在频率表的排名成反比)
Pagerank:这个负载包含在一种在hadoop上的pagerank的算法实现,使用自动生成的web数据,web数据中的链接符合zipfian分布。(对于任意一个term其频度(frequency)的排名(rank)和frequency的乘积大致是一个常数)
machine learning benchmarks
Mahout bayesian classification(bayes):大规模机器学习,这个负载测试mahout(apache开源机器学习库)中的naive bayesian 训练器,输入的数据是自动生成的文档,文档中的单词符合zipfian分布。
Mahout k-means clustering(kmeans):测试mahout中的k-means聚类算法,输入的数据集由基于平均分布和高斯分布的genkmeansdataset产生。
data analytics benchmarks
Hive query benchmarks(hivebench):包含执行的典型olap查询的hive查询(aggregation和join),使用自动生成的web数据,web数据的链接符合zipfian分布。
参考网址:
https://github.com/intel-hadoop/HiBench
https://github.com/intel-hadoop/HiBench/blob/master/docs/build-hibench.md
https://github.com/intel-hadoop/HiBench/blob/master/docs/run-hadoopbench.md
一个完整的TeraSort测试需要按以下三步执行:
- 用TeraGen生成随机数据
- 对输入数据运行TeraSort
- 用TeraValidate验证排好序的输出数据
所有hibench测试基本都是这样的流程,生成数据,运行,输出结果。
软件依赖
HiBench需要java环境,以及Maven管理。
安装java运行环境
安装JDK&JRE
sudo apt-get install openjdk-8-jre openjdk-8-jdk
建议装version 8不要装9。安装完成后,默认路径是/usr/lib/jvm/java-8-openjdk-amd64
,如果不一致请搜索到正确路径。
添加环境变量
cd
vim .bashrc
添加如下jave的PATH:
# JAVA PATH
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
更新环境变量
source .bashrc
测试java环境
java -version
看到相应版本信息输出即表明配置正确:
hadoop@hadoop-master:~$ java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
安装Maven
下载Maven包
wget http://apache.fayea.com/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.zip
解压缩
unzip apache-maven-3.5.0-bin.zip -d /YOUR/PATH/TO/RESTORE
笔者解压位置为/usr/local/
。
添加环境变量
cd
vim .bashrc
添加如下Maven的PATH:
# set maven environment
export M3_HOME=/usr/local/apache-maven-3.5.0
export PATH=$M3_HOME/bin:$PATH
更新环境变量
source .bashrc
测试Maven环境
mvn -v
看到相应版本信息输出即表明配置正确:
hadoop@hadoop-slave1:~$ mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /usr/local/apache-maven-3.5.0
Java version: 1.8.0_121, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "4.4.0-53-generic", arch: "amd64", family: "unix"
下载HiBench
Github地址:https://github.com/intel-hadoop/HiBench
注意事项:1、Python 2.x(>=2.6) is required.
2、bc is required to generate the HiBench report.(如没有bc工具,执行yum install bc)
3、Supported Hadoop version: Apache Hadoop 2.x, CDH5.x, HDP
4、Build HiBench according to build HiBench.
5、Start HDFS, Yarn in the cluster.
git clone https://github.com/intel-hadoop/HiBench.git
比较慢,建议直接网页下载zip包,然后解压到理想的目录下。
安装Hibench
切到HiBench下,执行对应的安装操作,可以选择自己想要安装的模块。以安装hadoop框架下用于测试sql的模块为例:
mvn -Phadoopbench -Dmodules -Psql -Dscala=2.11 clean package
或者直接执行
mvn clean package
更多安装命令可见https://github.com/intel-hadoop/HiBench/blob/master/docs/build-hibench.md。
// 安装 bc 用于生成 report 信息
yum install bc
配置HiBench
主要配置conf/hadoop.conf
及conf/hibench.conf
两个文件。
hadoop.conf
进入conf目录:
cp hadoop.conf.template hadoop.conf
[root@cdh-agent1 conf]# vi hadoop.conf
# Hadoop home
hibench.hadoop.home /opt/cloudera/parcels/CDH/lib/hadoop
# The path of hadoop executable
hibench.hadoop.executable ${hibench.hadoop.home}/bin/hadoop
# Hadoop configraution directory
hibench.hadoop.configure.dir ${hibench.hadoop.home}/etc/hadoop
# The root HDFS path to store HiBench data 这里就是生成测试数据存放的hdfs负目录,注意要有写权限
hibench.hdfs.master hdfs://10.x.x.x:8020/user/hibench
# Hadoop release provider. Supported value: apache, cdh5, hdp
hibench.hadoop.release cdh5
hibench.conf
The definition of these profiles can be found in the workload's conf file i.e. conf/workloads/micro/wordcount.conf
hibench.scale.profile tiny
# Mapper number in hadoop, partition number in Spark
hibench.default.map.parallelism 8
# Reducer nubmer in hadoop, shuffle partition number in Spark
hibench.default.shuffle.parallelism 8
主要设置测试集运行时的数据量和并发度。
这里以wordcount为例,conf/benchmarks.lst 测试项目
conf/frameworks.lst 配置语言,这两个文件可以不作修改即可。
在conf/hibench.conf文件中配置了一些测试的相关参数,比如MR并行度,报告路径,名称等。
其中hibench.scale.profile为对应的生成的数据量大小,他的值对应于conf/workloads/micro/wordcount.conf中设置的数值。
进入conf/workloads/micro/,wordcount.conf文件配置的是生成的数据量大小
[root@cdh-agent1 micro]# more wordcount.conf
#datagen
hibench.wordcount.tiny.datasize 32000
hibench.wordcount.small.datasize 320000000
hibench.wordcount.large.datasize 3200000000
hibench.wordcount.huge.datasize 32000000000
hibench.wordcount.gigantic.datasize 320000000000
hibench.wordcount.bigdata.datasize 1600000000000
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
安装完成后,可以运行其中的测试集。首先要启动hadoop:
start-dfs.sh;
start-yarn.sh;
关于hadoop的快速配置教程请见Hadoop真分布式集群最速搭建攻略。
执行测试脚本
在bin/run_all.sh 该脚本为测试所有的测试基准模块(将运行所有在conf/benchmarks.lst和conf/frameworks.lst中的workloads);
这里还是以wordcount为例,
①生成测试数据 bin/workloads/micro/wordcount/prepare/prepare.sh
②运行wordcount测试例子 bin/workloads/micro/wordcount/hadoop/run.sh
③生成的测试数据在conf/hadoop.conf中hibench.hdfs.master项配置,我的是在/user/hibench/HiBench目录下
以运行Hadoop框架下micro集的sort为例:
单个测试实例运行
bin/workloads/micro/sort/prepare/prepare.sh
bin/workloads/micro/sort/hadoop/run.sh
运行所有在conf/benchmarks.lst 和 conf/frameworks.lst配置的测试实例.
bin/run_all.sh
等待读条MapReduce完毕,
/bin/run_all.sh可以一次性跑所有样例
设置要跑的样例
编辑/home/jeff/HiBench-master/conf/benchmark.lst保留要想测试的样例
由于实验需求我是要四中样例如下
我只要跑hadoop样例不用spark样例,所以还要删除frameworks.lst中的spark删掉
配置要一次性跑的程序之后
到/home/jeff/HiBench-master/bin中运行./run_all.sh
查看测试报告
测试报告位置:report/hibench.report
[root@cdh-agent1 report]# cat hibench.report
Type Date Time Input_data_size Duration(s) Throughput(bytes/s) Throughput/node
HadoopWordcount 2018-03-07 09:53:15 35891 43.457 825 825
HadoopWordcount 2018-03-07 10:21:22 3284906140 283.518 11586234 11586234
HadoopSort 2018-03-07 10:41:19 328492770 49.502 6635949 6635949
HadoopJoin 2018-03-07 14:08:00 1919260193 264.432 7258048 7258048