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)时,请确保使用相同的集群版本,以避免兼容性风险。您可以在集群详情页面查看集群的版本信息。
操作步骤
关联RSS。
在EMR on ACK页面,单击已创建Spark集群的集群名称。
在集群详情页面的基础信息区域,单击关联ShuffleService后面的前往关联。
在关联集群的区域内,单击新增。
在关联集群对话框中,选择已创建的Shuffle Service集群,单击关联。
可选:配置RSS参数,详情请参见配置项说明。