了解 Spark中的master、worker和Driver、Executor

2023-05-16

master和worker是物理节点,是在不同环境部署模式下和资源相关的两大内容
Driver和executor是进程,是在spark应用中和计算相关的两大内容

1、master和worker节点
master节点常驻master守护进程,负责管理worker节点,并且会从master节点提交应用。

worker节点常驻worker守护进程,会与master节点进行通信,并且管理executor进程。

在搭建spark集群时,就已经设置好了master节点和worker节点,一个集群中可以有多个master节点和多个worker节点。一台pc机器可以同时作为master和worker节点【例如:有四台机器,就可以选择一台机器做masker节点,剩下三台设置为worker节点,也可以把四台都设置为worker节点,这种情况下,有一台机器既是master节点又是worker节点。】

2、driver和executor进程
driver:
根据不同的部署模式,driver可以运行在master上,也可以运行在worker上。

driver进程就是应用的main函数并且会构建sparkContext对象,当提交应用后,就会启动一个对应的driver进程,driver本身会根据设置的参数占用一定的资源,主要是 cpu core和memory。

driver首先会向集群管理者(standalone、yarn、mesos)申请spark应用所需的资源,也就是executor,然后集群管理者会根据spark应用所设置的参数在各个worker上分配一定数量的executor,每个executor都会占用一定数量的cpu和memory。在申请到应用所需的资源后,driver就能开始调度和执行编写的应用代码了。

driver进程会将我们编写的spark应用代码拆分成多个stage,每个stage会执行一部分代码片段,并为每个stage创建一批tasks,然后再将这些tasks分配到各个executor中执行。

executor:
executor进程宿主在worker节点上,一个worker可以有多个executor。每个executor会持有一个线程池,每个线程可以执行一个task。executor执行完task后,可以将结果返回给driver

每个executor执行的task都是属于同一个应用的。此外executor还有一个功能就是为应用程序中要求缓存的RDD提供内存式存储,RDD是直接缓存在executor进程内的,也是因此,任务task可以在运行时充分利用缓存数据加速运算。

参考资料:
Spark中master、worker、executor和driver的关系
Spark中的Driver和Executor详解及相关调优

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 Spark中的master、worker和Driver、Executor 的相关文章

  • 需要为USB外围设备编写驱动程序吗?

    我正在设计一个 USB 外设 它偶尔会连接到 Windows PC 并在每个方向上传输几 KB 的数据 将有一个自定义 PC 应用程序使用专有协议 即 USB 有效负载 来控制数据传输 我在下面的链接中看到微软描述的how为 USB 设备编
  • 在生产中找不到模块“worker_threads”错误

    我创建了一个利用工作线程的 Node js 项目 当我在 VS Code 中运行 npm start 时 代码工作正常 但是当在Ubuntu服务器中构建和复制时 它显示 找不到模块 worker threads 在生产环境中使用工作线程部署
  • 打印机通讯捕获

    如果我需要将其发布到其他地方 请告诉我 我们有一些正在重写的旧软件 它使用专有打印机的打印机驱动程序 我需要重写软件绕过打印驱动程序并直接进入打印机 我确实有打印机通信的规格 这很好 但我想做的是监视与打印机的通信以查看其内容 来自我重写的
  • 在 Windows 10 驱动程序中将内核空间虚拟地址映射到用户空间虚拟地址

    我正在 Windows 10 64 位 中编写一个内核模式驱动程序 其主要目的是从 DMA 读取 我想知道是否不是将内存块从内核空间复制到用户空间中分配的缓冲区 我可以以某种方式向用户空间公开一个地址 当然不是物理地址 并节省内存复制操作
  • USB 电源是否始终启用?如果没有,如何编写驱动程序

    我的设备配有交流电源适配器 其连接器是迷你 USB 插头 然而 除非安装了特定的驱动程序 否则该设备似乎无法通过计算机的 USB 端口 使用标准 USB 迷你 USB 电缆 自行供电 该驱动程序仅适用于 Windows 我想通过不同平台上的
  • Spark CollectAsMap

    我想知道collectAsMap在Spark中是如何工作的 更具体地说 我想知道所有分区的数据聚合将在哪里进行 聚合发生在 master 或workers 中 在第一种情况下 每个工作人员将其数据发送到主设备上 当主设备从每个工作人员收集数
  • Spark 中 BroadCast 导致的内存溢出(SparkFatalException)

    背景 本文基于 Spark 3 1 1 open jdk 1 8 0 352 目前在排查 Spark 任务的时候 遇到了一个很奇怪的问题 在此记录一下 现象描述 一个 Spark Application Driver端的内存为 5GB 一直
  • 阿里技术官亲笔力作:Kafka限量笔记,一本书助你掌握Kafka的精髓

    前言 分布式 堪称程序员江湖中的一把利器 无论面试还是职场 皆是不可或缺的技能 而Kafka 这款分布式发布订阅消息队列的璀璨明珠 其魅力之强大 无与伦比 对于Kafka的奥秘 我们仍需继续探索 要论对Kafka的熟悉程度 恐怕阿里的大佬们
  • 如何取消微过滤器驱动程序中的重命名操作

    我想取消微过滤器中的重命名操作 我已经写了 检测文件何时被重命名的代码 但我不清楚如何 实际上取消操作 谁能帮我解决这个问题吗 这是我的回调例程 用于检测文件重命名 FLT PREOP CALLBACK STATUS PreSetInfor
  • 在驱动程序安装期间重新扫描设备树以了解硬件更改

    我在用着安装盾安装我的应用程序 驱动程序和服务 仅当在设备管理器中找到其硬件 ID 时 我才需要安装即插即用驱动程序 驱动程序安装是使用 DPInst exe 完成的 我的问题是 用户有时可以手动卸载驱动程序 安装后甚至卸载驱动程序 未知司
  • 是否可以使用WCF与Windows内核模式软件进行通信?

    WCF 支持一些互操作性绑定 这些绑定是否允许与内核模式 sw 通信 AFAIK 内核模式 sw 可以打开命名管道 在Local System安全上下文 这些命名管道可以与 WCF 互操作吗 是的 您应该能够使用 WCF 中的命名管道绑定来
  • 优雅地实现 ExecutorServices 的队列长度指示器

    为什么 哦 为什么不java util concurrent为其提供队列长度指标ExecutorService是 最近我发现自己在做这样的事情 ExecutorService queue Executors newSingleThreadE
  • 在 C# 中打印到 LPT1

    如何在 C 中使用文件 LPT1 直接打印到点阵打印机 我用 fopen 在 C 上做到了这一点 但我不知道如何在 c 中做到这一点 非常感谢 在 Windows 中将打印机设置为 通用 仅文本 然后打印到它 这是我用来打印到具有自己的编码
  • 如何在heroku上的两个不同应用程序之间共享worker?

    我有两个独立的应用程序在heroku上运行并指向同一个数据库 第一个负责user interface第二个为admin interface 我在用sidekiq with redis对于后台作业处理 我添加了一个工作人员 并且可以通过设置指
  • Java 执行器无法对任务进行排队

    我需要一个 Java 执行器 如果正在处理其他任务 它会拒绝任务 我想不可能操纵工作队列大小 有人可能会奇怪 为什么我首先需要一个具有这种特征的执行者 我需要能够轻松更改策略并允许非零队列大小 有任何想法吗 Use a 线程池执行器 htt
  • SpringBoot Undertow:如何分派到工作线程

    我目前正在查看 springboot undertow 对我来说 不太清楚如何将传入的 http 请求分派到工作线程以阻止操作处理 看着班级Undertow 嵌入式 Servlet Container class 看起来没有办法实现这种行为
  • 无法解析的外部符号 _DEVPKEY_Device_BusReportedDeviceDesc

    对于连接到我的机器的设备 我想检索设备属性总线报告设备描述 为此我使用函数设置DiGetDeviceProperty https msdn microsoft com library windows hardware ff551963 of
  • 如果 WinDbg 附加断点,则驱动程序加载/卸载失败

    我刚刚开始进行驱动程序开发 对于一些加载 卸载和调试的实验 我编写了以下简单的驱动程序 include
  • 数据源的驱动程序类的名称丢失(Netbeans+ PostgreSql + Glassfish)

    我正在尝试在 Postgres 9 2 db 和 Glassfish 4 服务器上使用 Netbeans 8 开发 EJB 应用程序 在 glassfish 管理面板中创建连接池和 JDBC 资源后 我无法使用数据源添加实体 Netbean
  • 如何在Tomcat 7.0.47启动时注册oracle jdbc驱动程序?

    我将ojdbc6 jar复制到tomcat安装文件夹中的lib文件夹中 当我部署在 JDBC 连接中使用 Oracle 驱动程序的 Web 应用程序时 服务器说找不到驱动程序类 我被迫手动执行 DriverManager registerD

随机推荐