首屆 E-MapReduce 極客挑戰賽正在火熱進行中,快來報名參加吧!
報名連結:(報名時間即日起至 09/21):
https://tianchi.aliyun.com/competition/entrance/531912/introductionE-MapReduce 極客挑戰賽釘釘交流群:35434038
本文主要講解自測工具的使用以及代碼的送出和評測,幫助選手更高效的解題。
直播回放連結:
https://developer.aliyun.com/live/247179一、初賽賽題說明
EMR 團隊提供用于比賽的
Spark 3.1.2代碼分支,選手進行 Spark 代碼優化和參數調優以提升 SparkSQL 執行效率,同時組委會提供性能測評工具供選手自行測試(單機環境或EMR叢集環境)。在比賽階段,選手将最終優化後的 Spark 代碼和調優參數打包,通過天池平台送出,天池平台會使用相同的性能測評工具,進行評測和排名。初賽測評環境的 EMR 叢集配置參考“初賽測評環境軟硬體配置”。
二、測評工具使用說明
參考文檔:
https://github.com/tianchi-emr/spark-sql-perf/blob/tianchi/README.md Benchmark工具:
https://github.com/tianchi-emr/spark-sql-perf将代碼 clone 到本地

tpcds-kit 工具編譯
進入
resource/bin
目錄,運作
compile.sh
腳本進行編譯步驟,該編譯腳本目前僅支援在LINUX和MACOS系統上進行編譯
cd resource/bin
bash compile.sh
生成資料集
resource/bin
目錄,修改
params.conf
配置檔案,指定如下配置項:
- SCALE_FACTOR:生成資料集規模,本地測試可選擇1
- ITERATIONS:執行輪數
- DATA_LOCATION:生成資料集的存儲路徑,需要預留有足夠的存儲空間
- RESULT_LOCATION:結果輸出路徑
- DATA_GEN_SPARK_MASTER:生成資料集運作的 spark 程式的 master,本地測試需要填寫 local[N],其中 N 為所使用的 CPU 核心數
配置完成後,運作
datagen.sh
腳本進行資料生成(執行過程中 dsdgen 工具輸出的 stderr日 志會被 sbt 判定為 [error] 日志,可以忽略)。
cd resource/bin
vim params.conf
bash datagen.sh
執行腳本時,以防誤删會先提示确認資料生成路徑,确認無誤輸入" Y "繼續執行。
執行成功後可檢視下檔案夾大小
運作 TPC-DS Benchmark 測試
resource/bin
params.conf
- SCALE_FACTOR:生成資料集規模,與生成資料集時配置内容相同,生成資料集配置後無需修改
- ITERATIONS:Benchmark 執行輪數
- DATA_LOCATION:資料集存儲目錄,與生成資料集時配置内容相同,生成資料集配置後無需修改
- SPARK_DIR:選手優化後 Spark 安裝目錄
(選手對 spark 代碼進行打包,指定路徑)
- TPCDS_RUN_SPARK_MASTER:Benchmark 運作的 spark 程式的 master,本地測試需要填寫 local[N],其中 N 為所使用的 CPU 核心數
run_tpcds.sh
腳本執行測試。
cd resource/bin
vim params.conf
bash run_tpcds.sh
運作完成後,選手可檢視運作時間判斷代碼優化效果。
Benchmark 預設會執行所有生成的 query,可以修改
src/main/notebooks/tpcds_run_emr.scala
腳本中的 query_filter 變量進行 query 指定。
val query_filter = Seq() // Seq() == all queries
val query_filter = Seq("q1-v2.4", "q2-v2.4") // run subset of queries
如果希望排除某些 query 不運作,可以将
exclude
變量設定為 true。
val exclude = true
val query_filter = Seq("q77-v2.4") // all queries except q77
此外,如果有參數的優化,可以在檔案中進行修改。例如修改 spark.conf,把參數設定為優化的參數,也能對優化的參數進行性能測試。
三、送出評測說明
選手基于比賽提供的 Spark 代碼進行優化,并将調優的 Spark 參數寫入到 Spark 代碼 conf/spark-defaults.conf 檔案中,将優化後的 Spark 代碼打包後送出至天池平台。平台會将 Spark 包自動部署到比賽提供的阿裡雲 EMR 叢集,并使用 Benchmark 工具加載選手調優的 Spark 參數進行測試。打包需要确認 conf/spark-defaults.conf 檔案存在,打包指令如下:
mvn -Phive,yarn -Phadoop-3.2 -Dhadoop.version=3.2.1 clean -DskipTests
./dev/make-distribution.sh --tgz -B -e -Phadoop-3.2 -Phive -Pyarn
在目錄下會生成一個 tgz 檔案,包含優化的 spark 代碼編譯後的架包以及優化的 spark-defaults.conf 的配置參數等
為確定優化參數在最終測評時生效,需確定在 conf 目錄下,放入 spark-defaults.conf 檔案并保證檔案名正确。
打包完成後到天池平台進行上傳評測。
送出位址:
https://tianchi.aliyun.com/competition/entrance/531912/submission/827評測需要一定時間,評測程式執行完成後,可在我的成績中檢視結果。
四 總結
本文結合首屆 E-MapReduce 極客挑戰賽的賽題說明,通過實操示範講解了自測工具的使用以及代碼的送出和評測。希望對參加比賽的同學們能有所幫助,也歡迎更多的技術同學報名參加我們的挑戰賽,一起探讨性能極限。
對比賽感興趣或者參賽過程中有疑問的小夥伴,歡迎掃描下方二維碼加入交流群一起來交流讨論~