详解 Spark 的运行架构
一、核心组件
1. Driver
- Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作
- 主要负责:
- 将用户程序转化为作业 (job)
- 在 Executor 之间调度任务 (task)
- 跟踪 Executor 的执行情况
- 通过 UI 展示查询运行情况
2. Executor
- Executor 是集群中工作节点(Worker)中的一个 JVM 进程,负责在 Spark 作业中运行具体任务(Task),任务彼此之间相互独立
- Spark 应用启动时,Executor 节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃, Spark 应用也可以继续执行,会将出错节点上的任务调度到其他 Executor 节点上继续运行
- Executor 有两个核心功能:
- 负责运行组成 Spark 应用的任务,并将结果返回给 Driver
- 通过自身的块管理器(Block Manager)为用户程序中要求缓存的 RDD 提供内存式存储。RDD 是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算
3. Master
- Master 是 Standalone 环境中的核心组件之一,主要负责资源的调度和分配,并进行集群的监控等职责,类似于 Yarn 环境中的 RM
4. Worker
- Worker 是 Standalone 环境中的核心组件之一,一个 Worker 运行在集群中的一台服务器上,由 Master 分配资源对数据进行并行的处理和计算,类似于 Yarn 环境中 NM
5. ApplicationMaster
- ApplicationMaster,用于向资源调度器申请执行任务的资源容器 Container,运行用户自己的程序任务 job,监控整个任务的执行,跟踪整个任务的状态,处理任务失败等异常情况
- Master/ResourceManager(资源)和 Driver(计算)之间依靠 ApplicationMaster 解耦合
二、核心概念
1. Executor参数
| 参数名称 | 说明 |
|---|---|
| –num-executors | 配置 Executor 的数量 |
| –executor-memory | 配置每个 Executor 的内存大小 |
| –executor-cores | 配置每个 Executor 的虚拟 CPU Core 数量 |
2. 并行度
Parallelism
- 整个集群并行执行任务的数量称之为并行度
- 区别于并发,并行是真正同时执行的进程
3. 有向无环图
DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环
- 有向无环图是由 Spark 程序直接映射成的数据流的高级抽象模型。就是将整个程序计算的执行过程和任务的调度用图形表示出来,可以用于表示程序的拓扑结构
三、Spark 任务提交流程

四、Yarn 的两种部署模式
两种模式主要区别在于:Driver 程序的运行节点位置
1. Client 模式
Client 模式将用于监控和调度的 Driver 模块在客户端执行,而不是在 Yarn 中,所以一般用于测试
- Driver 在任务提交的本地机器上运行
- Driver 启动后会和 ResourceManager 通讯申请启动 ApplicationMaster
- ResourceManager 分配 Container,在合适的 NodeManager 上启动 ApplicationMaster,负责向 ResourceManager 申请 Executor 内存
- ResourceManager 接到 ApplicationMaster 的资源申请后会分配 container,然后 ApplicationMaster 在资源分配指定的 NodeManager 上启动 Executor 进程
- Executor 进程启动后会向 Driver 反向注册,Executor 全部注册完成后 Driver 开始执行 main 函数
- 之后执行到 Action 算子时,触发一个 Job,并根据宽依赖开始划分 stage,每个 stage 生成对应的 TaskSet,之后将 task 分发到各个 Executor 上执行
2. Cluster 模式
Cluster 模式将用于监控和调度的 Driver 模块启动在 Yarn 集群资源中执行。一般应用于实际生产环境
- 在 Yarn Cluster 模式下,任务提交后会和 ResourceManager 通讯申请启动 ApplicationMaster
- 随后 ResourceManager 分配 Container,在合适的 NodeManager 上启动 ApplicationMaster,此时的 ApplicationMaster 就是 Driver
- Driver 启动后向 ResourceManager 申请 Executor 内存,ResourceManager 接到 ApplicationMaster 的资源申请后会分配 Container,然后在合适的 NodeManager 上启动Executor 进程
- Executor 进程启动后会向 Driver 反向注册,Executor 全部注册完成后 Driver 开始执行 main 函数
- 之后执行到 Action 算子时,触发一个 Job,并根据宽依赖开始划分 stage,每个 stage 生成对应的 TaskSet,之后将 task 分发到各个 Executor 上执行
相关文章:
详解 Spark 的运行架构
一、核心组件 1. Driver Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行工作主要负责: 将用户程序转化为作业 (job)在 Executor 之间调度任务 (task)跟踪 Executor 的执行情况通过 UI 展示查询运行情况 2. Exec…...
盲盒小程序开发,为市场带来的新机遇
近年来,盲盒市场一直处于热门行业中,发展非常快速。在互联网的支持下,也衍生出了线上盲盒小程序,实现了线上线下双发展的态势。 盲盒小程序作为一种新的盲盒购物方式,受到了盲盒消费者的喜爱,为盲盒行业的…...
stm32学习-流水灯
接线 注意:LED灯长一点的引脚是正极。 配置GPIO 1.使用RCC开启GPIO时钟 void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); void RCC_APB1Perip…...
GIGE 协议摘录
系列文章目录 GIGE 学习笔记 GIGE 协议摘录 文章目录 系列文章目录引言第 1 章 设备发现1.1 链路选择1.1.1 单链路配置1.1.2 多链路配置1.1.3 链路聚合组配置 LAG 1.2 IP配置1.2.1 协议选择1.2.2 静态IP1.2.3 DHCP1.2.4 链接本地地址 LLA 1.3 设备枚举1.3.1 GVCP设备发现广播设…...
服务器的远程桌面无法连接,服务器远程桌面无法连接问题处理教程
服务器的远程桌面无法连接,服务器远程桌面无法连接问题处理教程。 一、问题概述 服务器远程桌面无法连接是日常运维中常见的问题之一。它可能由多种原因造成,如网络问题、服务器配置错误、远程桌面服务未启动等。本教程将指导您逐步排查并解决这些问题。…...
【机器学习300问】105、计算机视觉(CV)领域有哪些子任务?
计算机视觉作为人工智能的重要分支,发展至今已经在诸多领域取得显著的成果。在众多的计算机视觉任务中,图像分类、目标检测与定位、语义分割和实例分割是四个基本而关键的子任务,它们在不同的应用场景下扮演着重要角色。这四个子任务虽然各具…...
安卓手机APP开发__超宽带(UWB)通信
安卓手机APP开发__超宽带(UWB)通信 目录 概述 控制方/发起方与控制方/响应方 参数范围 后台测距 STS 配置 步骤 使用限制 代码示例 示例应用 UWB 范围 RxJava3 支持 生态系统支持 支持 UWB 的移动设备 第三方 SDK 概述 注意 :UWB 目前仅支持 Jetpac…...
儿童股骨干骨折用儿童悬吊如何进行康复
儿童股骨干骨折后的悬吊康复训练,应根据骨折的具体情况和儿童的年龄来制定个性化的康复计划。悬吊康复训练主要目的是通过减轻骨折部位的压力,促进骨折愈合,同时保持和增强儿童的肌肉力量和关节活动能力。 悬吊康复训练的方法 1.垂直悬吊皮牵…...
vscode plantuml插件安装使用(windows)
1、安装JDK,网址 https://www.oracle.com/java/technologies/,添加系统变量JAVA_HOME 2、安装graphviz,网址 Download | Graphviz, 并添加用户变量GRAPHVIZ_DOT 3、vscode安装插件plantuml 4、新增wsd文件,按照使用…...
Linux内核编译流程3.10
一、内核源代码编译流程 编译环境: cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) Linux内核版本: uname -r 3.10.0-693.el7.x86_64 编译内核源代码版本:linux-4.19.90-all-arch-master cp /boot/config-xxx到内核源代码目录/.configmake menuconfi…...
OSPF多区域组网实验(华为)
思科设备参考:OSPF多区域组网实验(思科) 技术简介 OSPF多区域功能通过划分网络为多个逻辑区域来提高网络的可扩展性和管理性能。每个区域内部运行独立的SPF计算,而区域之间通过区域边界路由器进行路由信息交换。这种划分策略适用…...
解密MySQL二进制日志:深度探究mysqlbinlog工具
欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 解密MySQL二进制日志:深度探究mysqlbinlog工具 前言mysqlbinlog工具概述mysqlbinlog的…...
妙解设计模式之策略模式
目录 策略模式的概念生活中的例子编程中的例子 软件工程中的实际应用数据排序文件压缩支付方式图形绘制 策略模式的概念 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,把它们一个个封装起来,并…...
Linux DHCP server 配置
参考:linux dhcp配置多vlan ip_linux 接口vlan-CSDN博客 配置静态IP地址: 给固定的MAC地址分配指定的IP地址,固定的IP地址不必包含在指定的IP池中,如果包含在IP地址池中,固定的IP地址会从IP地址池中移除 配置方法&…...
深入解析力扣166题:分数到小数(模拟长除法与字符串操作详解及模拟面试问答)
力扣166题:分数到小数 在本篇文章中,我们将详细解读力扣第166题“分数到小数”。通过学习本篇文章,读者将掌握如何使用多种方法来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释和ASCII图解&am…...
新疆 | 金石商砼效率革命背后的逻辑
走进标杆企业,感受名企力量,探寻学习优秀企业领先之道。 本期要跟砼行们推介的标杆企业是新疆砼行业的龙头企业:新疆兵团建工金石商品混凝土有限责任公司(以下简称:新疆金石)。 从年产80万方到120万方&am…...
Dinky MySQLCDC 整库同步到 Doris
资源:flink 1.17.0、dinky 1.0.2、doris-2.0.1-rc04 问题:Cannot deserialize value of type int from String ,detailMessageunknowndatabases ,not a valid int value 2024-05-29 16:52:20.136 ERROR org.apache.doris.flink.…...
基于Qt的网上购物系统的设计与实现
企鹅:2583550535 代码和论文都有 第1章 绪论... 1 1.1 项目背景... 1 1.2 国内外研究现状... 1 1.3 项目开发意义... 3 1.4 报告主要内容... 3 第2章 关键技术介绍... 4 2.1 后端开发技术... 4 2.1.1 C. 4 2.1.2 Qt框架... 4 2.1.3 MySQL数据库... 5 2.2 …...
设计软件有哪些?建模和造型工具篇(4),渲染100邀请码1a12
建模使用到的工具有很多,这次我们接着介绍。 1、PolyBoost PolyBoost是由Digimation公司开发的3ds Max插件,旨在增强软件的多边形建模功能。该插件提供了一系列强大的建模工具,如边缘控制、顶点编辑、面片调整等,使用户能够更加…...
Java基础:面向对象(二)
Java基础:面向对象(二) 文章目录 Java基础:面向对象(二)1. 面向对象编程思想2. 类与对象2.1 类2.1.1 类的定义2.1.2 成员变量2.1.3 局部变量 2.2 对象2.2.1 对象的定义2.2.2 对象的使用2.2.3 对象创建的原理…...
3D模型轻量化3大技术路径:实现60%体积缩减与跨平台适配
3D模型轻量化3大技术路径:实现60%体积缩减与跨平台适配 【免费下载链接】threestudio A unified framework for 3D content generation. 项目地址: https://gitcode.com/gh_mirrors/th/threestudio 副标题:解决移动端加载缓慢、Web端交互卡顿、AR…...
Alpine Linux在WSL中的生产力配置:zsh美化+Rust环境搭建
Alpine Linux在WSL中的生产力配置:zsh美化Rust环境搭建 在Windows Subsystem for Linux (WSL)生态中,Alpine Linux以其轻量级和安全性逐渐成为开发者的新宠。本文将带你打造一个兼具美观与高效的Alpine开发环境,特别适合追求极简主义又不愿牺…...
HCPL-0700-000E,低输入电流、高增益且与高安全隔离性能的光耦
型号介绍今天我要向大家介绍的是 Broadcom 的光耦——HCPL-0700-000E。它的内部结构就像一个高效的“信号转换站”,结合了一个发光二极管和一个集成的高增益光子探测器。光电二极管和输出级采用独立引脚设计,当输入端接收到电流时,LED 会发出…...
STM32CubeMX项目实战:从新建工程到驱动LED,一步步教你玩转HAL库(附代码解析)
STM32CubeMX实战指南:HAL库驱动LED的底层逻辑与工程化思维 第一次打开STM32CubeMX时,那种面对密密麻麻的配置选项却不知从何下手的焦虑感,相信每位嵌入式开发者都记忆犹新。不同于传统寄存器操作的直白,HAL库和图形化配置工具带来…...
Linux内存不够用吧 Linux 交换内存(Swap)来帮忙
Linux内存不够用吧 Linux 交换内存(Swap)来帮忙 Linux 交换内存(Swap)完全指南:概念、配置与性能优化 我开发了一款内存管理工具,内存管理工具下载地址 1. 什么是交换内存(Swap)&a…...
S32K3项目中途想换调试器?手把手教你为已有工程添加Lauterbach调试接口
S32K3项目中途切换调试器:无缝迁移Lauterbach接口的工程实践 在嵌入式开发领域,调试工具的灵活切换往往意味着效率的飞跃。想象这样一个场景:你正在使用NXP S32K3系列MCU开发汽车电子控制单元,项目已进行到中期测试阶段࿰…...
告别内存映射:用AXI-Stream协议搞定FPGA视频流传输(附时序图解析)
告别内存映射:用AXI-Stream协议搞定FPGA视频流传输(附时序图解析) 在FPGA视频处理系统中,数据流的传输效率往往成为性能瓶颈。传统的内存映射方式虽然通用,但对于高吞吐量的视频数据流却显得力不从心。AXI-Stream协议以…...
Qwen All-in-One场景解析:如何用轻量模型赋能边缘计算应用
Qwen All-in-One场景解析:如何用轻量模型赋能边缘计算应用 1. 引言:当边缘计算遇上大模型 想象一下,在一个智能工厂的质检工位上,摄像头捕捉到产品表面的微小瑕疵。传统的做法是:将图像上传到云端服务器,…...
HC-SR501人体红外传感器:从参数解析到树莓派实战应用
1. HC-SR501人体红外传感器核心参数解析 第一次接触HC-SR501时,我被它简单的三针脚设计迷惑了——这么小的模块真能检测人体移动?实测后发现这简直是智能家居项目的"火眼金睛"。让我们拆解它的关键参数,你会发现每个调节旋钮背后都…...
DAMO-YOLO在Vue前端项目中的实时检测应用
DAMO-YOLO在Vue前端项目中的实时检测应用 1. 引言 想象一下,你正在开发一个智能安防系统,需要在网页上实时检测监控视频中的人员和车辆。传统的方案是将视频流发送到服务器处理,但网络延迟和隐私问题让人头疼。有没有可能在用户的浏览器里直…...
