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.conf
及conf/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