一、核心组件定义与关系拆解

1. ApplicationMaster(AM)
  • 定义:YARN 框架中的应用管理器,每个应用程序(如 Spark 作业)对应一个 AM。
  • 职责
    • 向 YARN 的 ResourceManager 申请资源(Container)。
    • 管理分配到的 Container,启动 Executor 进程。
    • 监控任务执行状态,处理失败重试。
  • 与其他组件关系:在 YARN 模式下,AM 是 Spark 与 YARN 的桥梁,不直接参与 Spark 作业逻辑(除了 yarn-cluster 模式下启动 Driver)。
2. Driver
  • 定义:Spark 应用的主控进程,是 Spark 作业的执行入口。
  • 职责
    • 创建 SparkContext,解析用户代码(如 RDD 转换)。
    • 将作业分解为 Task,调度到 Executor 执行。
    • 监控 Task 进度,收集结果,处理错误。
  • 与其他组件关系:在 Standalone 和 YARN 模式中位置不同(见下文对比),是 Spark 作业的 “大脑”。
3. Executor
  • 定义:运行 Spark 任务的工作进程,每个 Executor 负责执行多个 Task。
  • 职责
    • 维护 Task 执行的线程池,执行 Driver 分配的 Task。
    • 缓存 RDD 数据,供 Task 复用。
    • 向 Driver 汇报任务状态和结果。
  • 与其他组件关系:依赖 Container 提供的资源运行,受 Driver 调度。
4. Container
  • 定义:YARN 中的资源抽象单位,封装 CPU、内存等资源。
  • 职责:为应用程序组件(如 AM、Executor)提供运行环境
  • 与其他组件关系:AM 向 YARN 申请 Container 来启动 Executor,Driver 和 Executor 在 Container 中运行(YARN 模式下)。

在 yarn-cluster 模式下:AM、Driver、Executor 各自占用独立的 Container,且 Container 是物理隔离的资源单元(包含实际分配的内存、CPU 等资源),并非逻辑概念每个 Container 对应一个真实运行的进程容器,由 YARN 的 ResourceManager 按物理资源标准分配。

其实上面这些概念AM,Container都是在Spark on Yarn集群模式下才有的,AM,Container这些概念是Hadoop中的,Spark通过Yarn分配资源,那就一定会存在,Spark Standalone没有,因为它是不依赖于外部框架的,而是用自身提供的

二、Standalone 与 YARN 模式的架构对比

1. Standalone 模式(Spark 原生集群管理器)
  • 架构图

  • 核心关系
    • Driver:由客户端启动,直接与 Master(集群管理器)和 Worker(工作节点)交互。
    • Executor:由 Worker 启动,运行在 Worker 节点上,受 Driver 调度。
    • 无 ApplicationMaster:Standalone 是 Spark 自研的资源管理框架,不依赖 YARN,因此没有 AM 组件。
    • 资源管理:Master 负责分配 Worker 节点的资源给 Driver,Driver 直接控制 Executor 的启动。
 Standalone 模式为什么没有 AM 和 Container?
  • AM 的替代者:Standalone 模式中,Master 节点承担资源调度角色(类似 YARN 的 ResourceManager),但没有 AM 这个中间层。
  • 资源分配单位差异
    • YARN 用 Container 封装资源;Standalone 直接向 Worker 节点申请 Executor 进程(每个 Executor 对应 Worker 节点的一组 CPU / 内存)。
  • 组件运行方式
    • Driver:由客户端启动,运行在客户端或 Worker 节点(取决于--deploy-mode)。
    • Executor:由 Worker 节点直接启动,作为独立进程运行(无 Container 封装)。
Standalone 模式架构流程
Master(总调度)↓
Worker节点1↓
Driver(若deploy-mode=cluster)或Executor1↓
Worker节点2↓
Executor2、Executor3...
2. YARN 模式(Spark 运行在 YARN 集群上)
  • 架构图(以 yarn-cluster 为例)

  • 核心关系
    • ApplicationMaster:作为 YARN 与 Spark 的中间层,向 ResourceManager 申请 Container 资源,启动 Driver 和 Executor。
    • Driver

yarn-cluster 模式下由 AM 启动,运行在 Container 中;

yarn-client 模式下由客户端启动,运行在客户端机器。

  • Executor:运行在 NodeManager 管理的 Container 中,受 Driver 调度。
  • 资源管理:YARN 的 ResourceManager 统一管理集群资源,AM 作为应用代表申请资源,Driver 不直接与 ResourceManager 交互。
(1) yarn-cluster 模式:Container 是 “物理隔离的办公间”
  • Container 本质:YARN 分配的最小资源单元(内存 / CPU 等),是进程运行的物理容器(类似 Docker 容器)。
  • 组件与 Container 的映射
    • AM:单独占用 1 个 Container(由 ResourceManager 分配),负责启动 Driver 和申请 Executor 资源。
    • Driver:由 AM 在另一个 Container 中启动(属于 AM 的子任务)。
    • Executor:每个 Executor 占用 1 个 Container,由 AM 向 ResourceManager 申请后启动。
  • 类比场景
    • ResourceManager 是 “房东”,负责分配房间(Container);
    • AM 是 “租客代表”,租到第一个房间后,再替 Driver 和 Executor 租其他房间。
yarn-cluster 模式架构流程
ResourceManager(总房东)↓
AM(租客代表)[Container1]↓
Driver(项目经理)[Container2]↓
Executor1[Container3]、Executor2[Container4]...(工人)
(2) yarn-client 模式:Driver 跳出 Container 的 “例外”
  • Container 的角色
    • AM 占用 1 个 Container(在集群内),仅负责申请 Executor 的 Container。
    • 每个 Executor 占用 1 个 Container(在集群内)。
  • Driver 的特殊性
    • Driver 在客户端机器(非集群节点)直接运行,不依赖 Container(因为 YARN 无法管理客户端资源)。
    • 类比:AM 在集群内租房间给 Executor,但 Driver 在 “集群外的自家房子” 办公,只通过网络指挥集群内的 Executor。
yarn-client 模式架构流程
客户端机器(本地)↓
Driver(项目经理)[非Container]↓
ResourceManager(总房东)↓
AM(租客代表)[Container1]↓
Executor1[Container2]、Executor2[Container3]...(工人)

涉及ResourceManager,NodeManager的,从略微更高的角度,去理解以上他们之间关系,请见文章

YARN与Spark组件架构关系及交互机制:从ResourceManager到Executor的层级、依赖与通信链路解析-CSDN博客

三、两种模式下组件关系的类比理解

1. Standalone 模式:自营小团队
  • Master:团队领导,分配任务给 Worker(员工)。
  • Driver:项目经理,直接对接领导,安排具体工作(Task)给员工(Executor)。
  • Executor:员工,在自己的工位(Worker 节点)上干活,听项目经理指挥。
  • 特点:Spark 自己管资源,简单直接,但扩展性和资源隔离性较差。
2. YARN 模式:外包大公司
  • YARN ResourceManager:大公司 CEO,掌管所有资源(Container)。
  • ApplicationMaster:外包项目负责人,向 CEO 申请资源(Container),拿到资源后组建团队。
  • Driver:项目技术负责人,由外包负责人招聘(启动),负责具体技术方案和任务分配。
  • Executor:外包员工,在公司分配的工位(Container)上干活,听技术负责人指挥。
  • 特点:YARN 统一管资源,Spark 作为应用运行,适合多应用混部,资源利用率高。

四、关键差异总结表

对比维度Standalone 模式YARN 模式
资源管理器Spark 自研的 Master-Worker 架构YARN 的 ResourceManager-NodeManager 架构
ApplicationMaster无,Driver 直接与 Master 交互有,作为 Spark 应用与 YARN 的中间层
Driver 位置由客户端启动,运行在客户端或 Worker 节点yarn-client 在客户端,yarn-cluster 在集群内
Executor 运行环境直接运行在 Worker 节点上运行在 YARN 的 Container 中(资源隔离性更好)
适用场景小规模集群,Spark 单一应用场景大规模集群,多应用混部(如 Hadoop 生态)

五、一句话理清组件关系

  • Standalone:Driver(项目经理)直接找 Master(领导)要资源,分配给 Worker 上的 Executor(员工)干活。
  • YARN:AM(外包负责人)先找 YARN CEO(ResourceManager)要 Container(工位),用 Container 启动 Driver(技术负责人)和 Executor(员工),Driver 再指挥 Executor 干活。

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

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

相关文章

IS-IS报文

前言: IS-IS采用分层架构,所有Level-2和Level 1-2路由器构成了骨干区域,同一区域的Level-1路由器构成了普通区域IS-IS支持三种认证方式,分别是接口认证、区域认证、路由域认证IS-IS有四种报文类型,分别是IIH、CSNP、P…

【Flutter】多语言适配-波斯语RTL从右到左

前言 在多语言适配的时候,波斯语的显示是从右到左的,需要针对一些控件进行单独适配。 核心逻辑:根据语言动态设置 Directionality Widget build(BuildContext context) {final isRtl Localizations.localeOf(context).languageCode fa;r…

【VSCode】在远程服务器Linux 系统 实现 Anaconda 安装与下载

【远程服务器】Anaconda 安装与下载 一、 安装Anaconda【方式一】直接在远程服务器下载,通过 wget 命令:【方式二】在本地电脑下载,在同意 vscode上传到服务器二、配置环境变量 本文基于 VSCode 进行远程服务器的配置,VSCode 相关安装可参考下…

【深度学习-Day 17】神经网络的心脏:反向传播算法全解析

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

线性回归神经网络从0到1

1.线性方程和向量乘法 深度学习的基础就是从线性回归方程的理论进入的。简单的线性回归方程为 比如大家日常中买房子,价格受到哪些因素影响呢? 比如房龄、交通、是否是学区、有无配套超市、公园,这些基本是外部条件,内部条件诸如…

11|省下钱买显卡,如何利用开源模型节约成本?

不知道课程上到这里,你账户里免费的5美元的额度还剩下多少了?如果你尝试着完成我给的几个数据集里的思考题,相信这个额度应该是不太够用的。而ChatCompletion的接口,又需要传入大量的上下文信息,实际消耗的Token数量其…

文章代码|皮层/表皮特异性转录因子 bZIP89 的自然变异决定了玉米侧根发育和抗旱能力

数据和材料可用性:评估本文结论所需的所有数据都包含在论文和/或补充材料中。本研究中的大量 RNA-seq 读数存放在 NCBI 序列读取档案 (www.ncbi.nlm.nih.gov/sra) 中,登录代码为 SRP446501/PRJNA980895。scRNA-seq、DAP-seq 和 DN…

铠大师:让用户畅享多元应用,助力鸿蒙生态发展

在全球信息技术产业格局加速重构的背景下,中国科技力量正以开放包容的姿态重塑操作系统生态范式。 5月19日,华为在成都举办的nova14系列及鸿蒙电脑新品发布会上,正式对外发布搭载了鸿蒙系统的笔记本电脑HUAWEI MateBook Pro与HUAWEI MateBoo…

初学Transformer架构和注意力机制

文章目录 说明一 LLM 简介二 Transformer 架构2.1 Transformer的架构组成2.1.1 输入嵌入 (Input Embedding)2.1.2 编码器 (Encoder) 的结构解码器 (Decoder) 的结构2.1.3 输出层 (Output Layer)结构 2.2 编码和解码器的独立输入理解 三 注意力机制 说明 本文适合初学者&#x…

基于PySide6与pycatia的CATIA几何阵列生成器开发实践

引言:参数化设计的工业价值 在航空航天、汽车制造等领域,复杂几何图案的批量生成是模具设计与机械加工的核心需求。传统手动建模方式存在效率低下、参数调整困难等问题。本文基于PySide6+pycatia技术栈,实现了一套支持​​动态参数配置​​、​​智能几何阵列生成​​的自动…

PDF 编辑批量拆分合并OCR 识别

各位办公小能手们!你们有没有过被PDF文件折磨得死去活来的经历?反正我是有,每次要编辑PDF,那叫一个费劲啊!不过呢,今天我要给大家介绍一款神器——WPS PDF to Word,有了它,PDF编辑那…

棒球比赛暗号百科·棒球1号位

关于棒球比赛暗号百科介绍,涵盖基本概念、历史演变、常见类型及经典案例: 棒球比赛暗号百科 一、定义与作用 棒球暗号是球员、教练团队通过手势、动作、语言或道具传递战术指令的密码系统,旨在隐蔽沟通攻防策略,避免对手破解。其…

Python实现基于线性回归的空气质量预测系统并达到目标指标

为了实现基于线性回归的空气质量预测系统并达到目标指标,以下是完整的Python代码实现: import pandas as pd import numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sklearn.preprocessing import StandardScal…

236.二叉树的最近公共祖先

在树结构中,祖先指的是一个节点的父节点或更高层级的父节点。公共祖先是指同时为节点p和q的祖先的节点。最近公共祖先(LCA)则是指在所有公共祖先中,距离p和q最近的那个节点。寻找LCA的方法可以按以下情况进行分析: 当…

面试题总结一

第一天 1. 快速排序 public class QuickSort {public static void quickSort(int[] arr, int low, int high) {if (low < high) {// 分区操作&#xff0c;获取基准元素的最终位置int pivotIndex partition(arr, low, high);// 递归排序基准元素左边的部分quickSort(arr, …

Stable Diffusion底模对应的VAE推荐

以下是主流Stable Diffusion底模对应的VAE推荐表格&#xff1a; 底模版本推荐VAE类型说明SD1.5SD1.5专用VAE通常使用vae-ft-mse-840000-ema-pruned.safetensorsSD2.0SD1.5兼容VAE或SD2专用VAE部分SD2模型需配套512-ema-only.vae.ptSD3内置VAESD3系列模型通常自带集成VAE无需额…

北斗导航 | 基于matlab的多波束技术的卫星通信系统性能仿真

基于多波束技术的低轨(LEO)卫星通信系统 **1. 仿真场景建模**1.1 LEO卫星轨道参数设置1.2 地面终端分布**2. 多波束天线模型**2.1 波束方向图生成2.2 频率复用方案**3. 链路预算与干扰分析**3.1 自由空间路径损耗3.2 信噪比(SNR)计算**4. 动态资源调度算法**4.1 基于流量需…

uni-app学习笔记十--vu3 computed的运用(一)

vue官方推荐使用计算属性来描述依赖响应式状态的复杂逻辑&#xff0c;computed具有缓存的作用&#xff0c;一个计算属性仅会在其响应式依赖更新时才重新计算&#xff0c;这意味着只要 相关值 不改变&#xff0c;无论多少次访问 都会立即返回先前的计算结果&#xff0c;从而在一…

多模态大模型详解

首先&#xff0c;得明确多模态大模型的定义和核心能力&#xff0c;比如处理文本、图像、音频、视频等多种数据模态。 其次是技术架构&#xff0c;可能需要分模块描述&#xff0c;比如感知层、特征提取、融合策略等&#xff0c;还有技术趋势如模型轻量化、开源生态。 应用场景…

如何通过UI设计提高用户留存率?

在竞争激烈的移动应用市场中&#xff0c;提高用户留存率是开发者的关键目标。UI 设计在实现这一目标中起着举足轻重的作用。精心设计的 UI 不仅能够吸引新用户&#xff0c;还能促使现有用户持续使用。以下是通过 UI 设计提升用户留存率的几种关键方法。 优化用户体验 用户体验…