RSS Uniffle 操作指南

最近更新时间:2025-02-08 14:28:52

我的收藏

功能介绍

随着 EMR 客户数量和 Spark 用户规模的持续增长,以及容器化应用的普及,Shuffle 作为大数据计算的核心算子,覆盖率高但资源消耗大,稳定性问题突出。
基于这样的背景,腾讯云弹性 MapReduce 新增的 RSS 集群类型并支持 Uniffle 组件,支持将 EMR on CVM 版及 EMR on TKE 版 Spark 集群通过一键绑定 RSS 集群操作,为 Spark 作业提供远端 Shuffle 服务。此举旨将提升大数据量 Shuffle 任务的性能,或在节点回收场景下增强任务的稳定性。

创建 RSS 集群

1. 登录 EMR 控制台 ,在 EMR on CVM 集群列表页单击创建集群,创建集群时集群类型选择RSS,您需要对集群进行软件配置、区域与硬件配置、基础配置和确认配置信息四个步骤。

2. 在软件配置步骤中,务必谨慎选择地域,Shuffle 服务不支持跨地域操作。
3. 在区域与硬件配置步骤中,高可用集群最小节点数为4个,包含2个 master 节点,最少2个 core 节点;非高可用集群存储为单副本,可作为测试使用,不建议作为生产环境。
注意:
1. 据并行的 Spark SQL任务数量、任务的 shuffle 的数据量大小,评估新建 RSS 集群的内存配置、磁盘 IO 带宽等。
2. 一个 RSS 集群支持为同 region 下的所有 spark 集群共享使用。
4. 在完成以上四个步骤配置后,单击购买进行支付,支付成功后 EMR 集群进入创建过程,大约10分钟后即可在 EMR 控制台中找到新建的集群。

操作步骤

Spark 集群使用 Uniffle

EMR on CVM Spark 集群使用 Uniffle

1. 在 EMR on CVM 版集群列表选择需要开启 shuffle 服务的集群,单击管理中的服务
2. 选择集群服务,并在 Spark服务面板的操作中单击设置shuffle服务。
3. 开启服务并选择所需关联的 RSS 集群 ID 并绑定。

spark.shuffle.manager 默认不开启,若开启后所有提交的 spark 任务均使用 RSS-Shuffle 服务,建议使用任务级别时开启,操作如下:
1. 在 Spark 配置管理页面对 Spark 组件修改 spark-defaults.conf 配置文件:
spark.shuffle.manager=org.apache.spark.shuffle.RssShuffleManager
spark.driver.extraClassPath=/usr/local/service/spark/rss-client/* (如该参数已存在,则将多个值用:隔开)
spark.executor.extraClassPath=/usr/local/service/spark/rss-client/* (如该参数已存在,则将多个值用:隔开)
2. Spark dynamic allocation
2.1 如使用了动态资源分配(spark.dynamicAllocation.enabled=true)的 spark 需要使用 uniffle,需要根据具体版本在 Spark 上打 patch 适配,请提交工单
2.2 修改 spark-defaults.conf 配置文件:spark.shuffle.service.enabled=false。
注意:
如果spark版本是3.5及以上,需另外配置参数 spark.shuffle.sort.io.plugin.class=org.apache.spark.shuffle.RssShuffleDataIo。

EMR on CVM Spark 集群关闭使用 Uniffle

1. Spark 服务面板的操作中单击设置shuffle服务,单击关闭服务按钮。
2. 在配置管理页去除 spark 参数:spark.shuffle.manager=org.apache.spark.shuffle.RssShuffleManager,下发即可。

EMR on TKE Spark 集群使用 Uniffle

操作方式同 EMR on CVM Spark 集群使用 Uniffle 一致,但关联和解绑 RSS 集群路径不同,操作路径如下:
1. 在 EMR on TKE 版集群列表选择需要开启 shuffle 服务的集群,单击集群 ID 进入集群信息页
2. 选择集群服务,并在集群服务中 Spark 服务,单击右上角的操作,单击设置 shuffle 服务。
3. 开启服务并选择所需关联的 RSS 集群 ID 并绑定。