鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

Spark自动调优使用示例

简要示范全流程使用鲲鹏自动调优,从获取模板到结果应用(以下步骤以3.3.1版本的Spark应用为例),将Spark应用默认配置下的123.132秒时延降低至52秒左右,性能提升130%+。

应用性能的提升效果可能受服务器硬件配置、其他应用运行等因素影响,请以实际情况为准。

前提条件

  • 环境已配置好3.3.1版本的Spark应用,应用所在文件夹的路径为“/opt/tools/installed/spark-3.3.1-bin-hadoop3.2/”
  • 已参照安装工具安装鲲鹏自动调优工具,本章示例均为RPM包安装使用。

操作步骤

  1. 生成简易模板。
    devkit kat template -g -o /opt/template

    命令中使用参数“-g”将进入交互界面,用户可选择模板文件需要的基本参数,参数“-o /opt/template”为生成的模板文件存放目录。

  2. 选择Spark应用。

    使用“”、“”键选择,按“Enter”键选中应用。

    图1 选择应用
  3. 选择应用版本。

    按“Enter”键进入版本列表选择需要的版本,按“Space”切换选项前“[ ]”中的参数,Y表示选用该版本。

    图2 选择版本1
    图3 选择版本2
  4. 选择参数类型。

    “Esc”返回上一级目录,使用“↓”选择ParamSpaces,按“Enter”进入参数类型列表选择参数类型。

    Spark为应用参数,System为系统参数,Kunpeng uarch为微架构参数。

    图4 选择应用参数

    按“Space”切换选项前“[ ]”中的参数,Y表示选用该参数,示例选择Spark和System。

    图5 选择需要配置的参数类型
  5. 选择具体参数。

    在启用对应参数后,按“Enter”键进入参数配置界面,选择需要启用的详细参数,目前应用参数和系统参数可自定义配置,可键入“/”进入搜索模式,查看需要配置的参数,也可按“Page Up”键和“Page Down”键翻页查看。

    图6 选择应用参数
  6. 保存配置,生成简易模板文件。

    配置完成后按“s”键保存简易模板文件至“/opt/template/”目录下。在“/opt/template/”目录下生成名为template_Spark_20250518_023644的文件夹,文件夹下包含任务参数文件(task_Spark_System.yaml)和应用参数文件(param_Spark_System.yaml)。

    按任意键可回到保存操作前的界面。

    保存成功回显如下:

    1
     Spark configuration file saved successfully: {'path': '/opt/template/template_Spark_20250518_023644'}
    
  7. 退出配置交互界面。

    按“q”键选择退出,再按“y”键确认退出;将在终端显示模板文件保存目录。

    返回信息如下:

    1
    [2025-05-15 06:38:31 UTC] [KAT] [message] - The path of the saved file is as follows: ['/opt/template/template_Spark_20250518_023644']
    
  8. 查看简易模板文件。
    ls /opt/template/template_Spark_202/

    返回信息如下:

    1
    param_Spark_System.yaml  task_Spark_System.yaml
    
    • 任务参数文件(task_Spark_System.yaml):包含执行任务所需的主机、应用路径、压测等相关信息。
    • 应用参数文件(param_Spark_System.yaml):包含所选择的各个参数空间中的具体参数信息。

    已选择的应用参数和系统参数可在模板文件生成目录下的参数文件param_Spark_System.yaml中查看或修改。

  9. 查看应用参数文件。
    cat /opt/template/template_Spark_20250515_063634/param_Spark_System.yaml

    param_xxxx.yaml文件内容为交互界面中选择的应用参数(包括默认选择的参数),应用参数文件内容如下:

    应用参数模板文件全部使用默认值。

  10. 查看并完善任务参数文件。
    vim /opt/template/template_Spark_20250515_063634/task_Spark_System.yaml

    该模板文件中一些任务必选参数值需用户根据实际情况填写,本示例填写内容请参见表1,参数说明可在任务模板的yaml文件中查看,任务模板文件如下:

    表1 task_Spark_System.yaml填写说明

    字段名称

    含义

    configs/rounds

    调优执行的总轮次,默认为50轮,此处填写为20轮。

    app/test_tool/tpcds_sql_index_list

    必须修改。性能测试时的用例列表,列表中的元素必须在1到99之间,并且14、23、24、39需要包含后缀a或b,此处填写“23a”。

    app/test_tool/database_name

    必须修改。性能测试时的数据库名称,此处填写为“tpcds_orc_hive_3”。

    app/host_name

    需要执行应用的服务器名,不输入时默认为本机执行任务。

    app/test_tool/app_exe_path

    必须修改。Spark执行文件所在文件夹的路径。此处填写为“/opt/tools/installed/spark-3.3.1-bin-hadoop3.2/bin”

  11. 保存退出任务参数文件。

    完善好基本配置后按“Esc”键,输入:wq!再按“Enter”键保存退出。

  12. 查看功能手册。
    1
    devkit kat man
    
    图7 手册目录

    输入1后按下“Enter”,查看快速上手KAT介绍内容。

    图8 quick start

    输入q退出当前界面,返回到选择界面。输入q退出查看功能手册界面。

  13. 开启自动调优。

    使用已完善的简易模板文件开始自动调优。

    devkit kat train -t /opt/template/template_Spark_20250528_025149/task_Spark_System.yaml -p /opt/template/template_Spark_20250528_025149/param_Spark_System.yaml 
    图9 自动调优结果
    • Spark性能指标为时延,基线性能为126秒,使用自动调优20轮后,最优性能数据为53秒,较基线性能提升137%左右。
    • 回显结尾处提供调优结果文件保存目录,默认生成在当前所在目录(“/home/template/DevKit-CLI-x.x.x-Linux-Kunpeng”)。
  14. 查看调优结果。

    自动调优后的参数集生成在工具所在目录下,示例中为“/home/template/DevKit-CLI-x.x.x-Linux-Kunpeng/train-20250520-091026”,可根据调优结果选择参数集进行应用参数的调整。

  15. 运用调优结果。
    devkit kat use -i /home/template/DevKit-CLI-x.x.x-Linux-Kunpeng/train-20250520-091026

    进入交互界面。

  16. 查看use子命令功能手册。

    输入man后按“Enter”,查看use子命令手册目录。

    图10 use子命令手册目录

    输入1后按下“Enter”,查看show子命令的帮助信息。

    图11 show子命令内容

    输入q退出当前界面,返回到选择界面。输入q退出功能手册界面。

  17. 查看性能测试数据。

    输入show后按“Enter”,查看自动调优的统计数据。

    图12 调优结果

    输入show top 5后按“Enter”,查看性能前五的数据。

    图13 性能前五的数据
  18. 对数据进行复测。

    在使用参数赋值前,为确定调优参数是否稳定,可对性能提升较好的轮次进行多次复测,结果中变异系数“CV(%)”越小,则表明复测的性能数据一致性越高,对应轮次的调优参数越稳定,可酌情使用到应用中。

    合理的测试场景下,变异系数“CV(%)”低于1%认为参数对应优化的效果非常稳定,1%-5%是比较稳定,5%-10%不太稳定可根据实际情况是否接受,若超过10%则认为此轮的参数不稳定,建议优先解决性能数据的稳定性问题(环境或人为因素)。

    在一般情况下,通常使用AB轮的方式进行复测,来保证测试结果的稳定性。例如:需要对最高性能轮次(假设轮次号为A)的结果进行复测,可以使用test 0,A 5,对基线轮次和最高性能轮次交替测试5组,共10次。

    输入test 11 5后按下“Enter”,对性能第一(自动调优的第11轮)的轮次进行复测5次。

    图14 复测数据

    示例中对指定轮次复测5次后,发现最后的变异系数“CV(%)”仅为3.94%,表明使用这一轮次的参数得到的性能数据一致性较高,对应的调优参数较为稳定,可以使用到应用程序或系统中。

  19. 查看全部参数重要性。

    输入show importance后按“Enter”。

    图15 全部参数重要性

    其中“importance(%)”列的比值越高,该参数对于调优的相关性越高。

  20. 使用参数重要性分析推断出的最佳参数进行测试。

    输入ibesttest后按“Enter”。

    图16 使用最佳参数测试
  21. 继续自动训练。

    输入train -r 5后按“Enter”,可在use界面中继续5轮的自动调优。

    图17 继续自动调优
  22. 将指定轮次参数设置到应用和系统中。

    若对11轮次的调优性能数据认可,输入set 11后按“Enter”,将自动调优后第十一轮任务的参数设置到应用和系统中。

    赋值成功后的回显如下:

    1
    [2025-05-19 06:55:48 UTC] [KAT] [message] - set params of round 11 success!
    
  23. 退出应用界面。

    输入exit后按“Enter”。