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

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

OmniShuffle Shuffle加速组件作为Spark的性能加速组件，通过Spark提供的插件机制，实现Shuffle Manager和Broadcast Manager插件接口，无侵入式替换Spark的原生Shuffle和Broadcast。

#### RSS模式

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

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


#### 叠加OmniOperator 算子加速

大数据引擎多采用Java/Scala算子，无法充分发挥CPU的能力。同时，对于异构算力，也不适用或无法发挥硬件的计算性能优势。OmniOperator算子加速特性使用Native Code充分发挥硬件计算性能优势，尤其是异构算力的计算能力。

通过OmniOperator 算子加速特性提升算子执行效率，同时使用OmniShuffle Shuffle加速组件特性优化数据交互过程，实现端到端提升引擎查询性能。


#### 整体方案

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

图1 OmniShuffle Shuffle加速组件逻辑架构图


**表1 子系统介绍**

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


#### 业务流程

OmniShuffle Shuffle加速基于Spark提供的ShuffleManager接口，结合内存池套件，实现Spark的Shuffle加速，OmniShuffle Shuffle加速组件业务具体流程如图2所示。

图2 RSS模式业务流程图

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

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