
# 使用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](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2124.html)。
   
   
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配置   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002345042513.png "点击放大")
   在Spark服务概览页面，选择"更多 \> 重启服务/滚动重启服务"，验证管理员密码后，等待服务重启成功。
   如果需要在Spark客户端用External Shuffle Service功能，需要重新下载并安装Spark客户端，请参考[使用MRS客户端](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2126.html)。
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/warning_3.0-zh-cn.png)
   组件重启期间将无法对外提供服务，可能会影响集群的上层业务正常运行，请在业务空闲期或确认操作无影响后再执行本操作。
   
   
 
