[HiBench] 安裝HiBench,測試在Spark上跑PageRank與修改源碼測試
背景:我想在HiBench上測試在Spark上跑PageRank性能,並想要修改PageRank的源碼進行測試。本來,HiBench在README裏寫的已經挺清楚的了,直接照着做就行。奈何我用的服務器沒有珂學上網,所以還是遇到了一點小麻煩。
下載HiBench
- 直接去官網clone HiBench的項目:Intel-bigdata/HiBench: HiBench is a big data benchmark suite. (github.com)
編譯spark模塊
- 按照官網的教程去編譯spark模塊。
mvn -Psparkbench -Dspark=2.4 -Dscala=2.11 clean package
這一步是需要珂學上網的。由於我的服務器上不能珂學上網,而我的本地可以。所以需要在本地編譯,然後將整個項目上傳到服務器上。
注意:不要在服務器上運行上面的代碼!否則mvn clean
會將所有文件都刪除,我就得重新將這個項目上傳一遍了(編譯後的整個文件夾大約1.5G)。
配置hadoop.conf
和spark.conf
- 配置
hadoop.conf
和spark.conf
。這個跟着官網的教程走就行。
hadoop.conf
:
cp conf/hadoop.conf.template conf/hadoop.conf
修改內容如下:
# Hadoop home
hibench.hadoop.home /usr/local/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
hibench.hdfs.master hdfs://10.0.0.1:8020
# Hadoop release provider. Supported value: apache
hibench.hadoop.release apache
其中,hibench.hadoop.home
是你的hadoop的安裝路徑。hibench.hdfs.master
是你的hadoop的namenode的地址。
spark.conf
:
cp conf/spark.conf.template conf/spark.conf
需要修改的內容如下:
# Spark home
hibench.spark.home /usr/local/spark
# Spark master
# standalone mode: spark://xxx:7077
# YARN mode: yarn-client
hibench.spark.master spark://10.0.0.1:7077
其中,hibench.spark.home
是你的spark的安裝目錄。hibench.spark.master
是你的spark的master的地址。
運行PageRank
PageRank的代碼在子目錄sparkbench/websearch
下。
- 運行PageRank的命令如下(也是按照教程):
bin/workloads/websearch/pagerank/prepare/prepare.sh
bin/workloads/websearch/pagerank/spark/run.sh
這一步如果報錯沒有python2,則運行下面的命令安裝即可:
sudo apt install python2.7
sudo ln -s /usr/bin/python2.7 /usr/bin/python2
- 在
conf/hibench.conf
中,hibench.scale.profile
規定了測試的規模。一開始,規模是
hibench.scale.profile tiny
pagerank的tiny規模的詳細信息可以在conf/workloads/websearch/pagerank.conf
中見到:
hibench.pagerank.tiny.pages 50
hibench.pagerank.tiny.num_iterations 1
hibench.pagerank.tiny.block 0
hibench.pagerank.tiny.block_width 16
如果需要修改測試的規模(例如改成small),只需要修改hibench.scale.profile
即可。
修改PageRank代碼並重新編譯、運行
-
在
sparkbench/websearch
中修改PageRank代碼。 -
在本地重新編譯websearch模塊。
mvn -Psparkbench -Dmodules -Pwebsearch -Dspark=2.4 -Dscala=2.11 clean package
然後我們要將重新編譯的項目再次拷貝到服務器上。由於整個項目有1.5G,所以如果每修改一次代碼就要重新上傳整個項目未免太過耗時。由於我們只是重新編譯了websearch模塊,其他模塊並沒有被修改。於是我們考慮只上傳我們修改的這部分。
觀察mvn的輸出,我們可以知道所需上傳的部分有:
/home/zcq/hibench/common/target
/home/zcq/hibench/autogen/target
/home/zcq/hibench/sparkbench/common/target
/home/zcq/hibench/sparkbench/websearch/target
/home/zcq/hibench/sparkbench/assembly/target
/home/zcq/hibench/hadoopbench/pegasus/target
/home/zcq/hibench/hadoopbench/nutchindexing/target
因此,比較簡單的方法是寫一個腳本,自動將這些被修改的文件夾同步到服務器上。
- 然後,在服務器上重新運行測試即可。