RDMA技术在Apache Spark中的应用

背景介绍

在当今数据驱动的时代,Apache Spark已经成为了处理大规模数据集的首选框架。作为一个开源的分布式计算系统,Spark因其高效的大数据处理能力而在各行各业中广受欢迎。无论是金融服务、电信、零售、医疗保健还是物联网,Spark的应用几乎遍及所有需要处理海量数据和复杂计算的领域。它的快速、易用和通用性,使得数据科学家和工程师能够轻松实现数据挖掘、数据分析、实时处理等任务。

然而,在Spark的灿烂光环背后,一个核心的技术挑战一直困扰着用户和开发者 -- Shuffle过程中的网络瓶颈。

在大规模数据处理时,Shuffle是Spark中不可或缺的一环,它涉及大量数据在不同节点间的交换,是整个数据处理过程中最耗时的部分之一。随着数据量的不断增长,网络传输成为了显著的性能瓶颈,这不仅影响了处理速度,还影响了整体的资源利用效率和系统的可扩展性。

Apache Spark Shuffle

在Spark中,Shuffle是数据处理过程的一个关键阶段,发生在数据需要redistribute的情况。

图一: shuffle中的数据流向

每个左上角的彩色条带代表Spark在Shuffle前计算得到的一个数据块。假设这些数据块分别存放在集群的不同的节点上。此刻,假设我们希望“根据颜色将这些数据块进行分组”,那么Shuffle过程就会启动:

首先,每台机器上的数据块会按颜色进行本地第一次聚合(从左上角的彩色条带变为中上部的彩色条带)。这些经过聚合的数据就成了Shuffle的中间数据。接下来,Spark会将中间数据以文件的形式暂存到各自节点的硬盘上(从中上部的条带变为"File")。这一部分称为Shuffle的Map阶段。

在这之后,所有相同颜色的数据块会通过网络第二次聚合到一个指定的节点上(从中上部的彩色条带移动至中下部)。这一阶段称为Shuffle的Reduce阶段。

至此,Spark完成了“根据颜色将数据块进行分组”这个要求,Shuffle过程结束。

在实际的操作中,Shuffle是一个非常耗时的过程,因为它涉及到大量的数据在网络中的传输。如果Shuffle管理得不好,它会成为Spark作业性能瓶颈的主要原因。

解决Spark Shuffle网络传输性能瓶颈的关键

为了克服这一挑战,近年来,远程直接内存访问(RDMA)技术逐渐进入了专家们的视野。RDMA允许内存数据直接从一个系统传输到另一个系统,而无需通过操作系统的干预,这显著减少了数据传输过程中的延迟和CPU的使用率。在高性能计算和大规模数据中心环境中,RDMA已经显示出了其强大的网络加速能力。

将RDMA技术应用于Apache Spark,尤其是在Shuffle过程中,可以大幅度减轻网络瓶颈带来的影响。通过利用RDMA的高带宽和低延迟特性,Spark的数据处理性能有望得到显著的提升。

RDMA相比传统网络技术的优势

Kernel Bypass:

  • 传统的网络通信需要操作系统内核参与数据的发送和接收,这会增加额外的延迟。每个数据包在传输过程中都需要经过操作系统的网络协议栈,这个过程中涉及多次上下文切换和数据拷贝。如下图所示。

图二: 传统网络通信中数据的发送和接收

  • RDMA技术允许网络设备直接访问应用程序内存空间,实现了内核旁路(kernel bypass)。这意味着数据可以直接从发送方的内存传输到接收方的内存,无需CPU介入,减少了传输过程中的延迟。如下图所示。

图三: RDMA网络通信中数据的发送和接收

  • 对于Spark的Shuffle过程,这意味着数据块可以更快地在节点间传输,因为它们不再需要在用户空间和内核空间之间进行多次拷贝。

CPU Offloading:

  • 在传统的网络通信中,CPU需要处理包括TCP协议栈在内的大量网络协议处理任务,这不仅消耗了大量的计算资源,而且还增加了通信的延迟。
  • RDMA通过其协议和硬件的设计,允许网络设备处理大部分数据传输的细节,从而释放CPU资源。这意味着CPU可以专注于执行计算任务,而不是网络数据的传输,从而提高了整体的计算效率。
  • 在Spark中,这样可以确保CPU更多地用于执行Map和Reduce阶段之外的实际计算工作,而不是在网络通信上。

RDMA技术在Apache Spark中的应用

  • 在Spark中集成RDMA

Spark允许将外部实现的ShuffleManager插入到其架构中。下图中通过实现Spark的接口,可以创建专有的ShuffleManager从而将RDMA技术引入到Shuffle过程中。

图四: 通过Spark接口将RDMA集成到Apache Spark

  • RDMA加速的实现

图五: RDMA在Spark Shuffle过程中的位置

上图中展示了RDMA引入Apache Spark前后的Shuffle过程中的数据传输方式。

在上半部分,展示了Apache Spark使用Netty作为网络传输层的传统方法。数据从磁盘读取,通过Netty服务器传输,然后由Netty客户端接收,并放入队列中供进一步处理。

在下半部分,展示了使用RDMA作为网络传输层的方法。在这种方式中, Netty客户端被RDMA客户端替换,而由于RDMA单边操作的特性,不再需要服务器端,Disk上的数据通过MMAP加载进入用户空间的内存,之后Client使用RDMA直接在网络上进行内存访问操作,避免了数据在操作系统内存和网络接口之间的多次复制,从而提高了数据传输速度,并减少了延迟和CPU负载。

性能数据和比较分析

为了验证我们的实现,我们在多种数据集和查询负载下进行了性能测试。测试结果如下图所示

图六:SQL的性能提升效果

这些测试结果表明,在多种场景下使用RDMA均能实现大约10%左右的性能提升。然而,值得注意的是,具体的加速效果会受到业务逻辑和数据处理工作负载的影响,因此我们推荐在实施RDMA解决方案前,对特定的应用场景进行详细评估。

应用场景建议

通过RDMA和Spark的特性分析,结合测试,可得到针对RDMA技术在Spark中适用和不适用的场景的优化建议:

  • 适合RDMA的场景
  • 大数据量的复杂SQL操作:在处理包含复杂操作(如Order by)的大数据量SQL查询时,RDMA技术可显著提升效率。
  • 大量小数据分区:当分区数量较多,且每个分区处理的数据量较小,传送的数据包较多时,RDMA的加速效果尤为显著。
  • 不适合RDMA的场景
  • 数据量大幅减少的操作:如SQL中的Group by聚合操作等,这些减少数据量的计算可能不会从RDMA中获得显著加速。
  • 基于HDD的磁盘集群:在使用HDD磁盘的集群中,由于读写速度较慢,磁盘I/O所占的时间较长,这可能限制RDMA技术的加速潜力。
  • 数据高度本地化: 如果数据本地化良好,则意味着网络传输占比较少,这种计算难以通过RDMA获得加速。

总结

尽管面临一些挑战,RDMA技术在Apache Spark中的应用仍然有着显著的优势,体现在以下几个方面:

  1. 提高数据传输效率:RDMA通过提供低延迟和高带宽的数据传输,显著加快了Spark中的数据处理速度。这是因为RDMA直接在网络设备和应用程序内存之间传输数据,减少了CPU的干预,从而降低了数据传输过程中的延迟。
  2. 减少CPU占用:RDMA的Kernel Bypass特性允许数据绕过内核直接从内存传输,减少了CPU在数据传输过程中的工作量。这不仅提高了CPU的有效利用率,还留出了更多资源用于Spark的计算任务。
  3. 改善端到端处理时间:在对比测试中,使用RDMA相比传统的TCP传输方式,在端到端的数据处理时间上有显著的降低。这意味着整体的数据处理流程更加高效,能够在更短的时间内完成相同的计算任务。
  4. 优化Shuffle阶段的性能:在Spark中,Shuffle阶段是一个关键的、对性能影响较大的阶段。RDMA通过减少数据传输和处理时间,有效地优化了Shuffle阶段的性能,从而提升了整个数据处理流程的效率。
  5. 增强大规模数据处理能力:对于处理大规模数据集的场景,RDMA提供的高效数据传输和低延迟特性尤为重要。它使得Spark能够更加高效地处理大数据量,提高了大规模数据处理的可扩展性和效率。

总而言之,RDMA技术在Apache Spark中的应用显著提升了数据处理的效率和性能。在未来,相信随着数据量的持续增长和计算需求的日益复杂化,RDMA技术在Apache Spark以及更广泛的大数据处理和高性能计算领域的应用将越来越广。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/415399.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

共同学习|Spring Cloud Alibaba一一sentinel介绍

Sentinel介绍 介绍 alibaba/Sentinel Wiki GitHub 1、Sentinel是什么 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征&a…

集合详解-迭代器遍历-增强for-List集合-List五种遍历方式-Set集合-排序规则Comparable-双列集合

Collection集合 数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用数据类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 Collection 集合概述和使用 Collection…

安全评估与安全评价:区分核心概念

在当今信息化社会中,保护数据和网络安全变得尤为重要。为了确保系统和组织的安全,我们需要了解并正确运用安全评估和安全评价这两个核心概念。虽然它们听起来相似,但其实它们有着不同的定义和目的。 首先,安全评估是一种系统性的…

【Github】如何在Github上找到zotero插件的下载位置

最近博主在使用zotero时需要从github上下载一个插件,通过链接跳转到Github对应的用户下,可是还是花了一些时间才找到插件的具体位置,这里将我的经历分享给大家。 1、跳转到Github对应的用户下。 博主需要下载zotero中的中文文献识别插件Jas…

Adobe Acrobat DC中如何合并pdf并生成目录

一、利用 Acrobat 合成pdf目录 (一)新建标签(更改标签等级等) 1,用Adobe acrobat 软件打开待添加书签的pdf文档。 2,打开之后点击软件左边栏的书签(有时被隐藏了,点击一下界面左边…

通过elementUI学习vue

<template><el-radio v-model"radio" label"1">备选项</el-radio><el-radio v-model"radio" label"2">备选项</el-radio> </template><script>export default {data () {return {radio: 1}…

Phoncent博客:探索AI写作与编程的无限可能

Phoncent博客&#xff0c;一个名为Phoncent的创新AIGC博客网站&#xff0c;于2023年诞生。它的创始人是庄泽峰&#xff0c;一个自媒体人和个人站长&#xff0c;他在网络营销推广领域有着丰富的经验。庄泽峰深知人工智能技术在内容创作和编程领域的潜力和创造力&#xff0c;因此…

【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南

全志D1-H开发板【哪吒】使用Deabian系统入门 特别说明&#xff1a; 因为涉及到操作较多&#xff0c;博文可能会导致格式丢失 其中内容&#xff0c;会根据后续使用做优化调整 目录&#xff1a; 参考资料固件烧录启动调教点灯问题 〇、参考资料 官方资料 开发板-D1开发板【…

面试笔记系列六之redis+kafka+zookeeper基础知识点整理及常见面试题

Redis redis持久化机制&#xff1a;RDB和AOF Redis 持久化 Redis 提供了不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储. AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redi…

如何在aws服务器上部署mysql

在AWS服务器上部署 MySQL 数据库可以通过以下步骤完成&#xff1a; 启动 EC2 实例&#xff1a; 在 AWS 控制台中启动一个 EC2 实例&#xff0c;选择适合你需求的实例类型和配置。 安全组配置&#xff1a; 确保你的 EC2 实例的安全组配置允许来自你的 IP 地址的 MySQL 连接。默…

iOS中卡顿产生的主要原因及优化思路

卡顿本质上是一个UI体验上的问题&#xff0c;而UI的渲染及显示&#xff0c;主要涉及CPU和GPU两个层面。若 CPUGPU渲染耗时超过16.7ms&#xff0c;就会在屏幕vsync信号到来时无法更新屏幕内容&#xff0c;进而导致卡顿。 iOS中UI渲染主要包含Layout->Draw->Prepare->Co…

动态住宅IP vs 静态住宅IP,如何选择适合你的海外住宅IP?

随着数字时代的发展&#xff0c;网络已经成为了我们日常生活中不可或缺的一部分。在海外留学、旅游、工作或者进行电子商务等活动时&#xff0c;一个合适的住宅IP可以帮助我们保护个人隐私、确保网络连接的稳定性、提高在线服务的可靠性等。因此&#xff0c;选择适合自己的住宅…

“集世界精华·展中国风采”2024北京智能科技展会(世亚智博会)

在科技的浪潮中&#xff0c;中国犹如一艘乘风破浪的巨轮&#xff0c;稳健地航行在广阔的海洋上。随着科技的飞速发展&#xff0c;中国正逐渐成为全球科技领域的一面旗帜&#xff0c;引领着世界科技潮流。在这个伟大的时代&#xff0c;中国以卓越的科技创新能力和前瞻的战略视野…

JVM相关工具【jps、jstat、jinfo、jmap、jhat、jstack、VisualVM、GCEasy、MAT、GCViewer、Arthas】

JVM相关工具 JDK工具包jpsjstatjinfojmapjhatjstackVisualVM 第三方工具【GCEasy、MAT、GCViewer、Arthas】 转自 《极客时间》 JDK工具包 jps jstat jinfo jmap jhat jstack VisualVM 第三方工具【GCEasy、MAT、GCViewer、Arthas】

QT多语言切换功能

一.目的 在做项目时&#xff0c;有时希望我们的程序可以在不同的国家使用&#xff0c;这样最好的方式是一套程序能适应于多国语言。 Qt提供了这样的功能&#xff0c;使得一套程序可以呈现出不同的语言界面。本文将介绍QT如何实现多语言&#xff0c;以中文和英文为例。 QT开发…

数仓模型设计方法论

在当今大数据时代&#xff0c;数据已经成为企业最重要的资产之一。而数据仓库作为企业数据管理和分析的核心基础设施&#xff0c;其设计方法论对于企业的数据治理和决策分析至关重要。本文将探索数仓模型设计的方法论&#xff0c;帮助读者更好地理解和应用数仓模型设计。 一、…

2024最新Android面试题目,【设计思想解读开源框架】

前言 从18年毕业至今&#xff0c;就职过两家公司&#xff0c;大大小小项目做了几个&#xff0c;非常感谢我的两位老大&#xff0c;在我的android成长路上给予我很多指导&#xff0c;亦师亦友的关系。 从年前至今参加面试了很多公司&#xff0c;也收到了几家巨头的offer&#…

Open CASCADE学习|曲线和曲面上的标架

曲线和曲面上的标架&#xff08;Frame&#xff09;是微分几何中的重要概念&#xff0c;用于描述曲线或曲面在一点处的几何性质。这些标架通常由一组正交单位向量组成&#xff0c;这些向量与曲线或曲面的切线、法线和副法线等方向有关。 对于曲线&#xff0c;常见的标架是Frene…

Apache Bench(ab )压力测试

目录 参数说明示例1&#xff1a;压力测试示例2&#xff1a;测试post接口post数据文件该如何编写&#xff1f; apr_pollset_poll: The timeout specified has expired (70007)apr_socket_recv: Connection reset by peer (104)参考 参数说明 官方文档参考这里。 ab -c 100 -n …

多模态大语言模型的ai反馈增强机器人操作研究

本研究关注于利用大语言模型&#xff08;LLMs&#xff09;提供的自动化偏好反馈来增强决策过程 ○ 提出了一种多模态LLM&#xff0c;称为CriticGPT&#xff0c;可以理解机器人操作任务中的轨迹视频&#xff0c;并提供分析和偏好反馈 ○ 从奖励建模的角度验证了CriticGPT生成的…