1. 程式人生 > >Hadoop常用測試集HiBench配置指南

Hadoop常用測試集HiBench配置指南

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

看到相應版本資訊輸出即表明配置正確:

[email protected]:~$ 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

看到相應版本資訊輸出即表明配置正確:

[email protected]:~$ 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.confconf/hibench.conf兩個檔案。

hadoop.conf

進入conf目錄:

cp hadoop.conf.template hadoop.conf
[[email protected] 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檔案配置的是生成的資料量大小

[[email protected] 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

[[email protected] 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