程序员

赛题解析 | E-MapReduce 极客挑战赛

作者:admin 2021-08-10 我要评论

首届 E-MapReduce 极客挑战赛正在火热进行中 快来报名参加吧 报名链接 报名时间即日起至 09/21 https://tianchi.aliyun.com/competition/entrance/531912/introd...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

首届 E-MapReduce 极客挑战赛正在火热进行中 快来报名参加吧

报名链接 报名时间即日起至 09/21 https://tianchi.aliyun.com/competition/entrance/531912/introduction


E-MapReduce 极客挑战赛钉钉交流群 35434038


本文主要讲解自测工具的使用以及代码的提交和评测 帮助选手更高效的解题。


一、初赛赛题说明

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 到本地

lALPDgfLSKJNZCvNAVzNBKQ_1188_348.png

tpcds-kit 工具编译

进入 resource/bin目录 运行 compile.sh脚本进行编译步骤 该编译脚本目前仅支持在LINUX和MACOS系统上进行编译

cd resource/bin
bash compile.sh
生成数据集

进入resource/bin目录 修改params.conf配置文件 指定如下配置项

SCALE_FACTOR 生成数据集规模 本地测试可选择1ITERATIONS 执行轮数DATA_LOCATION 生成数据集的存储路径 需要预留有足够的存储空间RESULT_LOCATION 结果输出路径DATA_GEN_SPARK_MASTER 生成数据集运行的 spark 程序的 master 本地测试需要填写 local[N] 其中 N 为所使用的 CPU 核心数

? image.png

配置完成后 运行datagen.sh脚本进行数据生成 执行过程中 dsdgen 工具输出的 stderr日 志会被 sbt 判定为 [error] 日志 可以忽略 。

cd resource/bin
vim params.conf
bash datagen.sh

执行脚本时 以防误删会先提示确认数据生成路径 确认无误输入 Y 继续执行。

image.png

执行成功后可查看下文件夹大小

image.png

运行 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 核心数

? image.png

配置完成后 运行run_tpcds.sh脚本执行测试。

cd resource/bin
vim params.conf
bash run_tpcds.sh

运行完成后 选手可查看运行时间判断代码优化效果。

image.png

Benchmark 默认会执行所有生成的 query 可以修改src/main/notebooks/tpcds_run_emr.scala脚本中的 query_filter 变量进行 query 指定。

image.png

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 把参数设置为优化的参数 也能对优化的参数进行性能测试。

image.png

三、提交评测说明

选手基于比赛提供的 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 的配置参数等

image.png

为确保优化参数在最终测评时生效 需确保在 conf 目录下 放入 spark-defaults.conf 文件并保证文件名正确。

image.png

打包完成后到天池平台进行上传评测。

提交地址 https://tianchi.aliyun.com/competition/entrance/531912/submission/827

image.png

image.png

评测需要一定时间 评测程序执行完成后 可在我的成绩中查看结果。


四 总结

本文结合首届 E-MapReduce 极客挑战赛的赛题说明 通过实操演示讲解了自测工具的使用以及代码的提交和评测。希望对参加比赛的同学们能有所帮助 也欢迎更多的技术同学报名参加我们的挑战赛 一起探讨性能极限。


对比赛感兴趣或者参赛过程中有疑问的小伙伴 欢迎扫描下方二维码加入交流群一起来交流讨论~

lADPD2sQwP55_5LNA97NAu4_750_990.jpg


本文转自网络,原文链接:https://developer.aliyun.com/article/786498

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 十月更新修复了Windows 10的Ping of De

    十月更新修复了Windows 10的Ping of De

  • Windows10 UAC弹窗太烦但又不能关?教

    Windows10 UAC弹窗太烦但又不能关?教

  • 老大手把手教我玩 Git 变基!

    老大手把手教我玩 Git 变基!

  • 在Linux终端中展示幻灯片

    在Linux终端中展示幻灯片

腾讯云代理商
海外云服务器