更新时间:2025-08-01 GMT+08:00

使用External Shuffle Service提升Spark Core性能

操作场景

Spark系统在运行含shuffle过程的应用时,Executor进程除了运行task,还要负责写shuffle数据以及给其他Executor提供shuffle数据。当Executor进程任务过重,导致触发GC(Garbage Collection)而不能为其他Executor提供shuffle数据时,会影响任务运行。

External shuffle Service是长期存在于NodeManager进程中的一个辅助服务。通过该服务来抓取shuffle数据,减少了Executor的压力,在Executor GC的时候也不会影响其他Executor的任务运行。

操作步骤

  1. 登录FusionInsight Manager系统。

    详细操作请参考访问集群Manager

  2. 选择“集群 > 服务 > Spark2x > 配置”。单击“全部配置”。
  3. 选择“SparkResource2x > 默认”,修改以下参数:

    表1 参数列表

    参数

    参数说明

    取值示例

    spark.shuffle.service.enabled

    Spark应用可能连接运行在NodeManager进程中的长时间运行的辅助服务,用于提高shuffle的性能。

    • true:启用External Shuffle Service。
    • false:关闭External Shuffle Service

    true

  4. 修改配置后,单击“保存”,根据界面提示操作后,等待配置保存成功。
  5. Spark服务端配置更新后,如果“配置状态”为“配置过期”,则需重启组件以使配置生效。

    图1 修改Spark配置

    在Spark服务概览页面,选择“更多 > 重启服务/滚动重启服务”,验证管理员密码后,等待服务重启成功。

    如果需要在Spark客户端用External Shuffle Service功能,需要重新下载并安装Spark客户端,请参考使用MRS客户端

    组件重启期间将无法对外提供服务,可能会影响集群的上层业务正常运行,请在业务空闲期或确认操作无影响后再执行本操作。