Spark 的 Http Broadcast 和 Torrent Broadcast 广播实现类的对比

        在 Apache Spark 中,广播机制用于高效地将小型只读数据分发到集群中的各个执行器(Executor)。Spark 中主要有两种不同的广播实现方式:Http Broadcast 和 Torrent Broadcast。这两种方式的核心目标都是将数据高效地分发给所有工作节点,但它们在实现方式、效率和性能方面存在显著差异。以下是对这两种机制的详细对比:

1. 实现机制

  • Http Broadcast
    • Http Broadcast 是早期的广播机制,Spark 会在驱动节点上启动一个内嵌的 HTTP 服务器,并将广播的数据上传到该服务器。
    • 每个执行器在需要广播数据时,会通过 HTTP 请求从驱动程序的 HTTP 服务器下载数据。
    • 驱动程序充当单一数据源,所有执行器从该源获取广播数据。
  • Torrent Broadcast
    • Torrent Broadcast 是 Spark 1.5 版本引入的默认广播机制,采用类似 BitTorrent 的分布式数据传输方式。
    • 驱动程序首先将广播数据分片成多个小块(chunks),这些块会首先发送给部分执行器。
    • 执行器在接收到数据块后,会同时处理这些数据块,并像种子一样,将数据块进一步分发给其他执行器。这种方式形成链式的广播,提高了并发性。
    • 每个执行器不仅仅从驱动获取数据,也可以从其他已经持有数据的执行器获取数据。

2. 效率与扩展性

  • Http Broadcast

    • 效率较低:由于每个执行器都必须从驱动节点的 HTTP 服务器下载广播数据,当集群规模较大时,驱动程序会成为瓶颈,导致广播的效率下降。驱动程序的带宽和计算资源都会受到限制,不能充分利用集群的带宽资源。
    • 可扩展性差:在大规模集群中,多个执行器同时从驱动程序下载数据时会产生高负载,驱动程序可能会因为过多的网络请求而过载。这种集中式的广播方式难以扩展到大型集群。
  • Torrent Broadcast

    • 高效并发传输:Torrent Broadcast 通过将数据分块,并在多个节点之间形成链式传播,显著提高了广播数据的并发传输效率。每个执行器不必都从驱动程序获取数据,可以从其他执行器获取数据块,从而减轻了驱动节点的负载。
    • 可扩展性强:由于数据传输是分布式的,不依赖于单一的驱动程序,Torrent Broadcast 在大规模集群中能够充分利用网络带宽资源,具备更好的扩展性。

3. 网络负载

  • Http Broadcast
    • 集中式负载:驱动程序承载了所有广播数据的下载请求,因此网络负载集中在驱动节点。网络传输压力集中在驱动程序与各执行器之间的网络链路,容易形成传输瓶颈。
  • Torrent Broadcast
    • 分布式负载:数据块通过多个节点以链式方式传播,网络负载分散在各个执行器之间。每个执行器既是数据的消费者也是数据的传播者,网络负载能够均匀分配,避免了集中式的网络瓶颈。

4. 容错性

  • Http Broadcast
    • 容错性低:如果驱动程序的 HTTP 服务器出现故障,所有广播数据的分发都将受到影响。此时,广播任务可能会失败,甚至导致作业无法完成。
  • Torrent Broadcast
    • 容错性强:由于 Torrent Broadcast 采用分布式传播方式,即使部分节点出现故障,其他节点仍可以继续传播数据。Spark 可以通过重试从其他节点获取数据块,从而具备更强的容错能力。

5. 驱动程序的负担

  • Http Broadcast
    • 驱动程序压力大:由于所有执行器都从驱动节点的 HTTP 服务器下载广播数据,随着集群规模的增长,驱动程序承受的负载会显著增加。
  • Torrent Broadcast
    • 驱动程序压力小:驱动程序只需要向一部分执行器发送数据块,之后这些执行器会承担起数据的传播工作。驱动节点的负载大大减轻,尤其是在大规模集群中表现尤为明显。

6. 使用场景

  • Http Broadcast
    • 适用于较小规模的集群和广播数据量较小的场景。在这些场景中,驱动程序的负载不会太重,且广播效率能够满足要求。
  • Torrent Broadcast
    • 适用于大规模集群和需要频繁广播大量数据的场景。Torrent Broadcast 能更好地利用集群的网络资源,减轻驱动节点的压力,提升整体广播效率。

7. 默认设置

  • Http Broadcast:在 Spark 1.5 版本之前,Spark 默认使用 Http Broadcast 作为广播机制。

  • Torrent Broadcast:自 Spark 1.5 起,Torrent Broadcast 成为默认的广播机制。该机制在大规模分布式计算环境中的性能要远远优于 Http Broadcast。

8. 性能对比

  • Http Broadcast
    • 延迟较高:由于所有执行器都从同一源获取数据,当执行器数量较多时,网络拥塞和等待时间会显著增加。
  • Torrent Broadcast
    • 延迟较低:通过分块并行传输,多个执行器可以同时接收不同的数据块,并相互之间传递数据,传输效率大大提升,延迟减少。

总结对比表

特性Http BroadcastTorrent Broadcast
实现方式中央化的 HTTP 服务器传输分布式数据块传输,链式传播
效率随着集群规模增大,效率迅速下降高效并发,适合大规模集群
可扩展性可扩展性差可扩展性强,适合大型集群
网络负载网络负载集中在驱动节点网络负载分散在多个节点之间
容错性容错性较差,驱动程序故障会导致广播失败容错性强,部分节点故障不会影响整体传播
驱动程序负担驱动程序负载较高驱动程序负担轻,依赖分布式节点传播
适用场景小规模集群和小数据集大规模集群和频繁的大数据广播
Spark 默认方式Spark 1.5 之前Spark 1.5 之后

总结

  • Http Broadcast 是 Spark 早期采用的广播机制,它简单且适合小规模集群,但随着集群规模的增大,它的效率和可扩展性会显著下降。
  • Torrent Broadcast 是更现代的广播机制,通过分块并行传输、分布式传播和链式分发,大大提高了广播数据的传输效率,并且适用于大规模集群的场景。因此,自 Spark 1.5 起,Torrent Broadcast 成为了默认的广播机制。

        在大规模分布式计算场景中,Torrent Broadcast 具有明显的性能优势,减少了驱动程序的负载,提升了广播的效率和容错性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#与Sqlite数据库

1,一般的访问方式。 1.1,连接语句。 //sqlite 连接,支持相对位置,也支持绝对位置 Data Source../../Database/cater.db// 连接数据库,FailIfMissingfalse时若文件不存在会自动创建 string connStr "DataSourcetest.db;Vers…

Linux相关概念和易错知识点(16)(Shell原理、进程属性和环境变量表的联系)

Shell原理及其模拟实现 在认识进程exec系列函数、命令行参数列表、环境变量之后,我们可以尝试理解一下Shell的原理,将各方知识串联起来,让Shell跑起来才能真正理解这些概念。我会以模拟Shell执行的原理模拟一个Shell。途中配上相关讲解。 1…

基于flask和neo4j的医疗知识图谱展示问答系统

如果你仍在为毕业设计的选题发愁,或者想通过技术项目提升专业实力,这个基于Flask和Neo4j的医疗知识图谱展示与问答系统,绝对是个不错的选择! 项目亮点大揭秘: 知识图谱与问答结合:我们采用了医疗场景下的知…

时间数据可视化基础实验(南丁格尔玫瑰图)——Python热狗大胃王比赛数据集

【实验名称】 实验一:时间数据的可视化 【实验目的】 1.掌握时间数据在大数据中的应用 2.掌握时间数据可视化图表表示 3. 利用python程序实现堆叠柱形图的可视化 【实验原理】 时间是一个非常重要的维度与属性。时间序列数据存在于社会的各个领域,如&a…

【Power Query】List.Select 筛选列表

List.Select 筛选列表 ——在列表中返回满足条件的元素 List.Select(列表,判断条件) 不是列表的可以转成列表再筛选&#xff0c;例如 Record.ToList 不同场景的判断条件参考写法 (1)单条件筛选 列表中小于50的数字 List.Select({1,99,8,98,5},each _<50) (2)多条件筛…

高低温探针台的工作原理及其构造

高低温探针台是一种用于材料科学、物理、化学等领域的实验设备&#xff0c;主要用于在高温和低温环境下对材料进行各种实验和研究。 高低温探针台的工作原理是将样品放置在加热和冷却组件上&#xff0c;然后使用各种测量仪器对其进行实验和测量。具体来说&#xff0c;其工作流程…

NVR批量管理软件/平台EasyNVR多个NVR同时管理支持UDP和TCP传输协议

随着科技的飞速发展&#xff0c;视频技术已成为现代社会不可或缺的一部分&#xff0c;广泛应用于安防监控、娱乐传播、在线教育、电商直播等多个领域。在这一背景下&#xff0c;NVR管理平台EasyNVR作为一款高效、灵活的视频监控管理系统&#xff0c;正经历着前所未有的发展机遇…

iOS 本地存储地址(位置)

前言: UserDefaults 存在沙盒的 Library --> Preferences--> .plist文件 CoreData 存在沙盒的 Library --> Application Support--> xx.sqlite 一个小型数据库里 (注:Application Support 这个文件夹已开始是没有的,只有当你写了存储代码,运行之后,目录里才会出…

MT-Pref数据集:包含18种语言的18k实例,涵盖多个领域。实验表明它能有效提升Tower模型在WMT23和FLORES基准测试中的翻译质量。

2024-10-10&#xff0c;由电信研究所、里斯本大学等联合创建MT-Pref数据集&#xff0c;它包含18种语言方向的18k实例&#xff0c;覆盖了2022年后的多个领域文本。通过在WMT23和FLORES基准测试上的实验&#xff0c;我们展示了使用MT-Pref数据集对Tower模型进行对齐可以显著提高翻…

C++list

1.迭代器的功能以及性质 功能有iterator&#xff0c;reverse_iterator&#xff0c;const_iterator&#xff0c;const_reverse_iterator 性质有单向&#xff0c;双向和随机&#xff0c;单向的迭代器只能操作&#xff0c;双向只能/--俩种&#xff0c;随机则可以执行/--//-的操作…

【C++篇】栈的层叠与队列的流动:在 STL 的韵律中探寻数据结构的优雅之舞

文章目录 C 栈与队列详解&#xff1a;基础与进阶应用前言第一章&#xff1a;栈的介绍与使用1.1 栈的介绍1.2 栈的使用1.2.1 最小栈1.2.2 示例与输出 1.3 栈的模拟实现 第二章&#xff1a;队列的介绍与使用2.1 队列的介绍2.2 队列的使用2.2.1 示例与输出 2.3 队列的模拟实现2.3.…

[快速阅读八] Matlab中bwlookup的实现及其在计算二值图像的欧拉数、面积及其他morph变形中的应用。...

以前看过matlab的bwlookup函数&#xff0c;但是总感觉有点神秘&#xff0c;一直没有去仔细分析&#xff0c;最近在分析计算二值图像的欧拉数时&#xff0c;发现自己写的代码和matlab的总是对不少&#xff0c;于是又去翻了下matlab的源代码&#xff0c;看到了matlab里实现欧拉数…

JS轮播图实现自动轮播、悬浮停止轮播、点击切换,下方指示器与图片联动效果

代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…

计算机网络原理总结C-网络层

网络层 网络层提供的两种服务网际协议IP 虚拟互连网络IP地址子网掩码&#xff08;无分类编址CIDR&#xff09;IP地址和MAC地址IP数据报格式&#xff08;路由&#xff09;转发分组的流程 因特网的路由选择协议&#xff08;动态路由协议&#xff09; 网际控制报文协议ICMPIP多播…

麒麟v10 arm64 部署 kubesphere 3.4 修改记录

arm64环境&#xff0c;默认安装 kubesphere 3.4 &#xff0c;需要修改几个地方的镜像&#xff0c;并且会出现日志无法显示 1 fluentbit:v1.9.4 报错 <jemalloc>: Unsupported system page size Error in GnuTLS initialization: ASN1 parser: Element was not found. &…

Java最全面试题->数据库/中间件->Redis面试题

文章目录 Redisredis的数据类型有哪些?Redis 内部结构有哪些?Memcache 与 Redis 的区别都有哪些?为什么 redis 需要把所有数据放到内存中?Redis 如何进行持久化?RDB和AOF的优缺点有哪些?什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?redis的淘汰策略有哪些?Red…

用更多的钱买电脑而不是手机

如果&#xff0c;我们对自己的定义是知识工作者&#xff0c;那么在工作、学习相关的电子设备投入上&#xff0c;真的别舍不得花钱。 需要留意的是&#xff0c;手机&#xff0c;对于大部分在电脑前工作的人&#xff0c;不是工作设备。在我看来&#xff0c;每年投入到电脑的钱&…

【高级IO】IO多路转接之select

select函数 我们知道IO 等待 拷贝&#xff0c;系统提供select函数来实现多路复用输入/输出模型&#xff1b;select系统调用是用来让我们的程序监视多个文件描述符的状态变化的&#xff1b;程序会停在select这里等待&#xff0c;直到被监视的文件描述符有一个或多个发生了状态…

植物健康,Spring Boot来助力

3系统分析 3.1可行性分析 通过对本植物健康系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本植物健康系统采用SSM框架&#xff0c;JAVA作为开发语言&#…

钉钉录播抓取视频

爬取钉钉视频 免责声明 此脚本仅供学习参考&#xff0c;切勿违法使用下载他人资源进行售卖&#xff0c;本人不但任何责任! 仓库地址: GItee 源码仓库 执行顺序 poxyM3u8开启代理getM3u8url用于获取m3u8文件userAgent随机请求头downVideo|downVideoThreadTqdm单线程下载和…