---
title: Spark自动调优使用示例
description: "简要示范全流程使用 鲲鹏自动调优 ，从获取模板到结果应用（以下步骤以3.3.1版本的Spark应用为例），将Spark应用默认配置下的126.5s时延降低至53s左右，性能提升130%+。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/profiler/tuning/KunpengDevKitCli_0129.html
sourcePath: /source/zh/kunpengdevps/profiler/tuning/KunpengDevKitCli_0129.html
indexId: ec98f7a5348176eb87ba0c1e51fcc6c401bb65a8b46d853efc649d820e385da966
---
# Spark自动调优使用示例

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

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


#### 前提条件

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


#### 操作步骤

1. 查看功能手册。
  1 devkit kat man

  图1 手册目录

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

  图2 quick start

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

2. 生成简易模板。

```
devkit kat template -g -o
/opt/template
```


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

3. 选择Spark应用。
  使用“↑”、“↓”键选择，按“Enter”键选中应用。

  图3 选择应用

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

  图4 选择版本1

  图5 选择版本2

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

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

  图6 选择应用参数

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

  图7 选择需要配置的参数类型

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

  图8 选择应用参数

7. 保存配置，生成简易模板文件。
  配置完成后按“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'}

8. 退出配置交互界面。
  按“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']

9. 查看简易模板文件。

```
ls
/opt/template/template_Spark_20250518_023644/
```


  返回信息如下：

  1 param_Spark_System.yaml task_Spark_System.yaml

  任务参数文件（task_Spark_System.yaml）：包含执行任务所需的主机、应用路径、压测等相关信息。 应用参数文件（param_Spark_System.yaml）：包含所选择的各个参数空间中的具体参数信息。 已选择的应用参数和系统参数可在模板文件生成目录下的参数文件param_Spark_System.yaml中查看或修改。

10. 查看应用参数文件。

```
cat
/opt/template/template_Spark_20250518_023644/param_Spark_System.yaml
```


  param_xxxx.yaml文件内容为交互界面中选择的应用参数（包括默认选择的参数），应用参数文件内容如下：

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

11. 查看并完善任务参数文件。

```
vim
/opt/template/template_Spark_20250518_023644/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” |


12. 保存退出任务参数文件。
  完善好基本配置后按“Esc”键，输入:wq!再按“Enter”键保存退出。

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性能指标为时延，基线性能为126s，使用自动调优20轮后，最优性能数据为53s，较基线性能提升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(%)”越小，则表明复测的性能数据一致性越高，对应轮次的调优参数越稳定，可酌情使用到应用中。

  合理的测试场景下，“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”。
