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.rhkb.cn/news/456863.html

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

相关文章

【虚幻引擎UE】UE5 音频共振特效制作

UE5 音频共振特效制作 一、基础准备1.插件准备2.音源准备 二、创建共感NRT解析器和设置1.解析器选择依据2. 创建解析器3. 创建解析器设置(和2匹配)4.共感NRT解析器设置参数调整5.为共感NRT解析器关联要解析的音频和相应设置 三、蓝图控制1.创建Actor及静…

排序(一)插入排序,希尔排序,选择排序,堆排序,冒泡排序

目录 一.排序 1.插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 二.整体代码 1.Sort.h 2.Sort.c 3.test.c 一.排序 1.插入排序 插入排序基本思想:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为 止…

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

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

纯血鸿蒙的最难时刻才开始

关注卢松松,会经常给你分享一些我的经验和观点。 纯血鸿蒙(HarmonyOS NEXT)也正式发布了,绝对是一个历史性时刻,但最难的鸿蒙第二个阶段,也就是生态圈的建设,才刚刚开始。 目前,我劝你现在不要升级到鸿蒙…

最新版本jdbcutils集成log4j做详细sql日志、自动释放连接...等

maven坐标 <!-- MySQL 8 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency><!-- Druid连接池 --><dependency><groupId&…

软考中级嵌入式系统设计师笔记分享(二)

1.TTL 电路是电流控制器件&#xff0c;而CMOS 电路是电压控制器件。 2.TTL 电路的速度快&#xff0c;传输延迟时间短(5-10ns)&#xff0c;但是功耗大。 常见的串行总线有 SPI、II2C、USB、RS232/RS422/RS485、CAN等;高速串行总线主要有 SATA、PCIE、IEEE 1394、Rapidl0、USB 3…

C# Unity 同步/异步编程和多线程什么关系?async/await和coroutine又是什么?

目录 不用模板生成的目录怎么这么丑啊 1.同步&#xff1f;异步&#xff1f;多线程&#xff1f; 2.async/await和coroutine&#xff1f; 证明 单线程中的同步/异步 同 异 多线程中的同步异步 同 异 1.同步&#xff1f;异步&#xff1f;多线程&#xff1f; 首先&#…

模型选择拟合

1.通过多项式拟合交互探索概念 import math import numpy as np import torch from torch import nn from d2l import torch as d2l 2.使用三阶多项式来生成训练和测试数据的标签 max_degree 20 # 多项式的最大阶数 n_train, n_test 100, 100 # 训练和测试数据集大小 true…

手动改造UPX壳,增加IAT保护

随便拿Delphi7&#xff0c;新建一个VCL窗体程序&#xff0c;画一个按钮&#xff0c;写两行代码。这一步骤讲究的是什么呢&#xff1f;率性而为&#xff0c;反正没什么卵用。比如&#xff0c;俺写的是这玩意。 <span style"color:#666666"><span style"…

FFMPEG+Qt 实时显示本机USB摄像头1080p画面以及同步录制mp4视频

FFMPEGQt 实时显示本机USB摄像头1080p画面以及同步录制mp4视频 文章目录 FFMPEGQt 实时显示本机USB摄像头1080p画面以及同步录制mp4视频1、前言1.1 目标1.2 一些说明 2、效果3、代码3.1 思路3.2 工程目录3.3 核心代码 4、全部代码获取 1、前言 本文通过FFMPEG(7.0.2)与Qt(5.13.…

YOLO系列入门:1、YOLO V11环境搭建

YOLO了解 yolo检测原理 yolo是目标检测模型&#xff0c;目标检测包含物体分类、位置预测两个内容。目前yolo的开发公司官网为&#xff1a;https://docs.ultralytics.com/zh截止到目前2024年10月&#xff0c;最新的是yolo11。关于YOLO的介绍可以参考这篇文章&#xff1a;https…

Python+Django+VUE 搭建深度学习训练界面 (持续ing)

PythonDjangoVUE 搭建深度学习训练界面 &#xff08;持续ing&#xff09; 环境说明 Pycharm 专业版2024.1.4&#xff0c;社区版不支持网页开发 下载链接&#xff1a;https://www.jetbrains.com/pycharm/download/other.html 参考链接&#xff1a;https://www.quanxiaoha.co…

es实现桶聚合

目录 聚合 聚合的分类 DSL实现桶聚合 dsl语句 结果 聚合结果排序 限定聚合范围 总结 聚合必须的三要素&#xff1a; 聚合可配置的属性 DSL实现metric聚合 例如&#xff1a;我们需要获取每个品牌的用户评分的min,max,avg等值 只求socre的max 利用RestHighLevelClien…

BIO,NIO,直接内存,零拷贝

前置知识 什么是Socket&#xff1f; Socket是应用层与TCP/IP协议族通信的中间软件抽象层&#xff0c;它是一组接口&#xff0c;一般由操作系统提供。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议处理和通信缓存管理等等都隐藏在Sock…

vue3使用i18n做国际化多语言,实现常量跟随语言切换翻译

因为我有一个常量的配置文件在项目中&#xff0c;而且有中文内容&#xff0c;我想在切换语言的时候&#xff0c;跟着这个翻译也实时切换&#xff0c;就可以使用computed计算属性实现。 把name改成下面的样子&#xff1a; name: computed(() > t(pad.regularMode)), 就可以…

分享一款录屏、直播软件

光音录屏 光音录屏 是新一代的录屏工具&#xff0c;跟传统录屏工具相比&#xff0c;它不仅可以录制屏幕&#xff0c;还可以同时录制「人像 屏幕」&#xff0c;此外它还提供了美颜、虚拟背景、绿幕抠像、图片、文本编辑、字幕、白板等更多高级功能。你可以将录制好的视频&…

ue5实现数字滚动增长

方法1 https://www.bilibili.com/video/BV1h14y197D1/?spm_id_from333.999.0.0 b站教程 重写loop节点 方法二 写在eventtick里

ffmpeg视频滤镜: 色温- colortemperature

滤镜简述 colortemperature 官网链接 》 FFmpeg Filters Documentation 这个滤镜可以调节图片的色温&#xff0c;色温值越大显得越冷&#xff0c;可以参考一下下图&#xff1a; 咱们装修的时候可能会用到&#xff0c;比如选择灯还有地板的颜色的时候&#xff0c;选暖色调还是…

多厂商的实现不同vlan间通信

Cisco单臂路由 Cisco路由器配置 -交换机配置 -pc配置 华三的单臂路由 -路由器配置 -华三的接口默认是打开的 -pc配置及ping的结果 -注意不要忘记配置默认网关 Cisco-SVI -交换机的配置 -创建vlan -> 设置物理接口对应的Acess或Trunk -> 进入vlan接口&#xff0c;打开接…

【纯血鸿蒙】HarmonyOS和OpenHarmony 的区别

一、开源鸿蒙&#xff08;Open Harmony&#xff09; 鸿蒙系统愿来的设计初衷&#xff0c;就是让所有设备都可以运行一个系统&#xff0c;但是每个设备的运算能力和功能都不同&#xff0c;所以内核的设计上&#xff0c;采用了微内核的设计&#xff0c;除了最基础的功能放在内核…