为Spark集群关联RSS

RSS(EMR Remote Shuffle Service)是E-MapReduce(简称EMR)为了提升Shuffle稳定性和性能推出的扩展组件,优化了Spark原生的Shuffle。本文为您介绍EMR on ACK上的Spark集群如何关联RSS。

背景信息

目前在ACK的场景下,Spark Shuffle面临的问题:

  • Spark Shuffle对本地存储有依赖,许多计算存储分离的机型、使用ECI的场景下没有自带本地盘,需要额外购买和挂载云盘,性价比和使用效率低。

  • Spark2在ACK环境下不支持Dynamic Allocation,Spark3基于ShuffleTracking实现了Dynamic Allocation,但Executor回收效率低下。

目前Spark Shuffle方案缺点如下:

  • Shuffle Write在大数据量场景下会溢出,导致写放大。
  • Shuffle Read过程中存在大量的网络小包导致的Connection reset问题。
  • Shuffle Read过程中存在大量小数据量的IO请求和随机读,对磁盘和CPU造成高负载。
  • 对于M*N次的连接数,在M和N数千的规模下,作业基本无法完成。

EMR推出的RSS服务,可以优化上述Spark Shuffle方案的问题,完美支持ACK环境下的Dynamic Allocation。RSS详情请参见RSS

前提条件

使用限制

  • Spark集群仅支持与同一ACK集群下的Shuffle Service集群进行关联。

  • 为Spark集群(EMR on ACK)关联RSS集群(EMR on ACK)时,请确保使用相同的集群版本,以避免兼容性风险。您可以在集群详情页面查看集群的版本信息。

操作步骤

  1. 登录EMR on ACK控制台

  2. 关联RSS。

    1. 在EMR on ACK页面,单击已创建Spark集群的集群名称。

    2. 集群详情页面的基础信息区域,单击关联ShuffleService后面的前往关联

    3. 关联集群的区域内,单击新增

    4. 关联集群对话框中,选择已创建的Shuffle Service集群,单击关联

  3. 可选:配置RSS参数,详情请参见配置项说明