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包安装使用。
操作步骤
- 生成简易模板。
devkit kat template -g -o /opt/template
命令中使用参数“-g”将进入交互界面,用户可选择模板文件需要的基本参数,参数“-o /opt/template”为生成的模板文件存放目录。
- 选择Spark应用。
使用“↑”、“↓”键选择,按“Enter”键选中应用。
图1 选择应用
- 选择应用版本。
按“Enter”键进入版本列表选择需要的版本,按“Space”切换选项前“[ ]”中的参数,Y表示选用该版本。
图2 选择版本1
图3 选择版本2
- 选择参数类型。
按“Esc”返回上一级目录,使用“↓”选择ParamSpaces,按“Enter”进入参数类型列表选择参数类型。
Spark为应用参数,System为系统参数,Kunpeng uarch为微架构参数。
图4 选择应用参数
按“Space”切换选项前“[ ]”中的参数,Y表示选用该参数,示例选择Spark和System。
图5 选择需要配置的参数类型
- 选择具体参数。
在启用对应参数后,按“Enter”键进入参数配置界面,选择需要启用的详细参数,目前应用参数和系统参数可自定义配置,可键入“/”进入搜索模式,查看需要配置的参数,也可按“Page Up”键和“Page Down”键翻页查看。
图6 选择应用参数
- 保存配置,生成简易模板文件。
配置完成后按“s”键保存简易模板文件至“/opt/template/”目录下。在“/opt/template/”目录下生成名为template_Spark_20250518_023644的文件夹,文件夹下包含任务参数文件(task_Spark_System.yaml)和应用参数文件(param_Spark_System.yaml)。
按任意键可回到保存操作前的界面。
保存成功回显如下:
1Spark configuration file saved successfully: {'path': '/opt/template/template_Spark_20250518_023644'}
- 退出配置交互界面。
按“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']
- 查看简易模板文件。
ls /opt/template/template_Spark_202/
返回信息如下:
1param_Spark_System.yaml task_Spark_System.yaml
- 任务参数文件(task_Spark_System.yaml):包含执行任务所需的主机、应用路径、压测等相关信息。
- 应用参数文件(param_Spark_System.yaml):包含所选择的各个参数空间中的具体参数信息。
已选择的应用参数和系统参数可在模板文件生成目录下的参数文件param_Spark_System.yaml中查看或修改。
- 查看应用参数文件。
cat /opt/template/template_Spark_20250515_063634/param_Spark_System.yaml
param_xxxx.yaml文件内容为交互界面中选择的应用参数(包括默认选择的参数),应用参数文件内容如下:

应用参数模板文件全部使用默认值。
- 查看并完善任务参数文件。
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”
- 保存退出任务参数文件。
完善好基本配置后按“Esc”键,输入:wq!再按“Enter”键保存退出。
- 查看功能手册。
1devkit kat man
图7 手册目录
输入1后按下“Enter”,查看快速上手KAT介绍内容。
图8 quick start
输入q退出当前界面,返回到选择界面。输入q退出查看功能手册界面。
- 开启自动调优。
使用已完善的简易模板文件开始自动调优。
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”)。
- 查看调优结果。
自动调优后的参数集生成在工具所在目录下,示例中为“/home/template/DevKit-CLI-x.x.x-Linux-Kunpeng/train-20250520-091026”,可根据调优结果选择参数集进行应用参数的调整。
- 运用调优结果。
devkit kat use -i /home/template/DevKit-CLI-x.x.x-Linux-Kunpeng/train-20250520-091026
进入交互界面。
- 查看use子命令功能手册。
输入man后按“Enter”,查看use子命令手册目录。
图10 use子命令手册目录
输入1后按下“Enter”,查看show子命令的帮助信息。
图11 show子命令内容
输入q退出当前界面,返回到选择界面。输入q退出功能手册界面。
- 查看性能测试数据。
输入show后按“Enter”,查看自动调优的统计数据。
图12 调优结果
输入show top 5后按“Enter”,查看性能前五的数据。
图13 性能前五的数据
- 对数据进行复测。
在使用参数赋值前,为确定调优参数是否稳定,可对性能提升较好的轮次进行多次复测,结果中变异系数“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%,表明使用这一轮次的参数得到的性能数据一致性较高,对应的调优参数较为稳定,可以使用到应用程序或系统中。
- 查看全部参数重要性。
输入show importance后按“Enter”。
图15 全部参数重要性
其中“importance(%)”列的比值越高,该参数对于调优的相关性越高。
- 使用参数重要性分析推断出的最佳参数进行测试。
输入ibesttest后按“Enter”。
图16 使用最佳参数测试
- 继续自动训练。
输入train -r 5后按“Enter”,可在use界面中继续5轮的自动调优。
图17 继续自动调优
- 将指定轮次参数设置到应用和系统中。
若对11轮次的调优性能数据认可,输入set 11后按“Enter”,将自动调优后第十一轮任务的参数设置到应用和系统中。
赋值成功后的回显如下:
1[2025-05-19 06:55:48 UTC] [KAT] [message] - set params of round 11 success!
- 退出应用界面。
输入exit后按“Enter”。