---
title: 架构介绍
description: "OmniShuffle Shuffle加速特性是一个大数据引擎Spark的性能加速组件，运行在客户数据中心的大数据集群内，通过内存池统一编址、数据内存语义交换及融合Shuffle等关键特性，减少数据磁盘I/O开销，提高数据分析的时效性和集群资源利用率。OmniShuffle Shuffle加速支持RSS/ESS两种模式，仅在部署形式和配置上存在少许差异，可自由便捷地切换两种模式。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC2/bds/kunpengbds_omniruntime_20_0252.html
sourcePath: /source/zh/kunpengboostkithistory/240RC2/bds/kunpengbds_omniruntime_20_0252.html
indexId: ebf65f190e130ea26433660a2a499dd8f290136f2303e9770be2c0aaaebc6a1f80
---
# 架构介绍

OmniShuffle Shuffle加速特性是一个大数据引擎Spark的性能加速组件，运行在客户数据中心的大数据集群内，通过内存池统一编址、数据内存语义交换及融合Shuffle等关键特性，减少数据磁盘I/O开销，提高数据分析的时效性和集群资源利用率。OmniShuffle Shuffle加速支持RSS/ESS两种模式，仅在部署形式和配置上存在少许差异，可自由便捷地切换两种模式。

OmniShuffle Shuffle加速作为Spark的性能加速组件，通过Spark提供的插件机制，实现Shuffle Manager和Broadcast Manager的插件接口，无侵入式地替换Spark开源版本中的Shuffle和Broadcast模块。

#### ESS模式

大数据Spark中Shuffle密集型的作业，在Map过程完成后，需要进行大量数据的跨节点交换。统计数据显示，Spark Shuffle过程在很多场景中占据了最多的时间和资源开销，甚至可以占到Spark业务端到端时间开销的50%到80%。Spark提供Shuffle Manager插件的能力，可以对Shuffle过程进行优化。开发者和用户可以通过Shuffle Manager定义的接口构建定制的Shuffle Manager，控制Shuffle的策略、方法和过程。

ESS模式通过实现Shuffle Manager插件接口使能In-memory Shuffle，即在内存池中通过内存语义完成Shuffle过程，减少Shuffle数据落盘，降低数据落盘读取、序列化和反序列化、压缩和解压缩带来的时间开销和算力开销。通过实现Broadcast Manager接口使能基于内存池共享的方式进行变量广播，提升广播变量在各个Executor之间的共享传输效率。同时，OmniShuffle Shuffle加速支持RDMA（Remote Direct Memory Access）和TCP两种网络模式。相比TCP，RDMA可提高传输效率，降低对算力的要求，实现节点间数据的高效交换。


#### RSS模式

数据分析业务场景中，数据量呈井喷式增长，且数据呈现出多源和异构的特征，导致数据分析成本越来越高。同时，传统的shuffle架构对本地存储有很强的依赖，无法做到存算分离，reduce节点存在很多碎片化的磁盘读写，严重影响效率。此外，传统shuffle在可靠性上也存在缺陷，在大规模场景下，磁盘故障时的shuffle数据丢失导致stage重算，链接数量过多会导致网路数据拉取失败。

RSS模式创新地采用了存算分离架构设计，确保计算节点和存储节点各尽所能，分工协作。通过对SparkShuffle写流程的重写，BoostRSS会将MAP阶段所产生的数据统一保存至RSS节点内，从而把原有的小文件和小I/O操作，聚合成高效的大文件与连续大I/O操作。能够显著增强磁盘读写的效率，减轻计算节点I/O处理压力，进一步释放其计算能力，提升整体MapReduce任务的执行性能。


#### 整体方案

OmniShuffle Shuffle加速通过实现Shuffle的Shuffle Manager插件接口使能In-memory Shuffle，OmniShuffle Shuffle加速整体方案架构如图1所示，子系统的介绍如表1所示。

图1 OmniShuffle Shuffle加速逻辑架构图


**表1 子系统介绍**

| 子系统 | 子系统介绍 |
| --- | --- |
| 内存池套件 | 提供分布式共享内存基础设施，并提供基础的内存语义。 |
| 元数据 | 保存Shuffle数据、节点相关信息的基础信息。 |
| Shuffle语义 | 提供Spark Shuffle语义实现的相关接口。 |
| BroadCast语义 | 提供Spark Broadcast语义实现的相关接口。 |


#### 业务流程

OmniShuffle Shuffle加速主要通过实现Spark Shuffle Manager接口，实现In-memory Shuffle，OmniShuffle Shuffle加速业务具体流程如图2和图3所示。

图2 ESS模式业务流程图

图3 RSS模式业务流程图

OmniShuffle Shuffle加速与Spark对接后，用户通过访问Spark的CLI可以查看集群的运行状态。管理员和运维人员可以通过OmniShuffle Shuffle加速的CLI查看集群的运行状态。

元数据服务由Driver启动，application之间隔离开来，只对当前应用服务。
