tencent cloud

文档反馈

RSS 开发指南

最后更新时间:2023-02-23 14:17:19

    RSS 简介

    Apache Uniffle 是用于计算引擎的统一远程 Shuffle 服务(RSS,Remote Shuffle Service),它具有在远程服务器上聚合和存储 Shuffle 数据的能力,从而极大地提高了大型作业的性能和可靠性。

    背景介绍

    现有 Shuffle 方案存在的问题:

    • 现有 Shuffle 无法使计算做到 serverless,在机器资源被抢占时会导致 Shuffle 数据的重新计算。
    • Shuffle Partition 会导致大量的 Shuffle 连接和网络小包,大规模场景下极容易发生超时问题。
    • Shuffle 过程存在写放大和随机 IO 问题,当 Shuffle 数据过大时,会严重影响集群性能和稳定性。
    • Spark Shuffle 服务和 NodeManager 在同一进程,IO 负载较高时极易导致 NodeManager 重启,影响 Yarn 调度。

    RSS 基本特点

    1. 将 Shuffle 数据存储在远程服务器,支持计算存储分离,计算存储混布等集群部署模式。
    2. 支持 Shuffle 数据聚合和数据缓存机制,最大化利用内存资源,降低对于磁盘的随机访问。
    3. 支持 Shuffle 数据的多种存储方式,如本地文件,HDFS 文件及混合模式等。
    4. 支持 Shuffle 数据的正确性校验,过滤无效数据的同时,保证任务计算过程中的数据正确性。
    5. 采用主从架构和主备多活模式,提升了集群资源利用率和服务的稳定性。

    RSS 基本架构


    其中,各个组件的功能如下:

    • Coordinator,基于心跳机制管理 Shuffle Server,存储 Shuffle Server 的资源使用等元数据信息,还承担任务分配职责,根据 Shuffle Server 的负载,分配合适的 Shuffle Server 给 Spark 应用处理不同的 Partition 数据。
    • Shuffle Server,主要负责接收 Shuffle 数据,聚合后再写入存储中,基于不同的存储方式,还能用来读取 Shuffle 数据(如 LocalFile 存储模式)。
    • Shuffle Client,主要负责和 Coordinator 和 Shuffle Server 通讯,发送 Shuffle 数据的读写请求,保持应用和 Coordinator 的心跳等。

    RSS 使用

    RSS 集群提供远程 Shuffle 服务,无法单独使用,需要 Spark 容器集群关联后使用。
    关联方法为:单击 Spark 集群 > 集群信息 > 关联 RSS 集群,然后选取处于运行中的 RSS 集群即可。

    RSS 配置

    您可在集群服务 > 配置管理页面查看 RSS 不同角色的配置文件和常见配置项内容。
    Coordinator 角色的配置文件有 coordinator.conf 和 log4j.properties,Shuffle Server 角色有 server.conf 和 log4j.properties 文件。
    coordinator.conf 常见配置项,不建议修改:

    参数 默认值 描述
    rss.coordinator.app.expired 60000 Application 过期时间(ms)
    rss.coordinator.dynamicClientConf.enabled false 是否开启动态客户端配置,由 spark 客户端获取
    rss.coordinator.exclude.nodes.file.path file:///usr/local/service/rss/conf/exclude_nodes 排除节点的配置文件路径
    rss.coordinator.server.heartbeat.timeout 30000 如果无法从 shuffle 服务器获取心跳,则超时
    rss.coordinator.shuffle.nodes.max 1000 分配时最大 Shuffle Server 数
    rss.jetty.http.port 19998 Coordinator 的 HTTP 端口
    rss.rpc.server.port 19999 Coordinator 的 RPC 端口
    rss.storage.type MEMORY_LOCALFILE RSS 存储类型,有 MEMORY_ONLY、MEMORY_LOCALFILE 和 MEMORY_LOCALFILE_HDFS。由于无可用的 Hadoop 集群,当前默认 MEMORY_LOCALFILE

    server.conf 常见配置项,不建议修改:

    参数 默认值 描述
    rss.coordinator.quorum rss-coordinator-rss-<集群Id>-0:19999,rss-coordinator-rss-<集群Id>-1:19999 Coordinator 地址信息
    rss.jetty.http.port 19998 Shuffle Server 的 HTTP 端口
    rss.rpc.server.port 19999 Shuffle Server 的 RPC 端口
    rss.server.buffer.capacity 内存 Limit 值 * 0.75 * 0.6 Shuffle Server 缓冲区管理器的最大内存
    rss.server.disk.capacity 单个数据盘容量*0.9 Shuffle Server 可以使用的磁盘容量
    rss.server.flush.thread.alive 数据盘数量 将数据刷新到文件的线程数
    rss.server.flush.threadPool.size 数据盘数量*2 将数据刷新到文件的线程池大小
    rss.server.heartbeat.interval 10000 到 Coordinator 的心跳间隔
    rss.server.heartbeat.timeout 60000 心跳超时时间
    rss.server.read.buffer.capacity 内存 Limit 值 * 0.75 * 0.2 读取数据的最大缓冲区大小
    rss.storage.basePath /data1/rssdata,/data2/rssdata... 路径个数默认等于数据盘数量 Shuffle 数据写入数据盘的路径
    rss.storage.type MEMORY_LOCALFILE RSS存储类型,需与 Coordinator 保持一致

    更多信息可参考 incubator-uniffle

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持