Spark集群架構解析:核心組件與Standalone、YARN模式深度對比(AM,Container,Driver,Executor)

一、核心組件定義與關系拆解

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 設計提升用戶留存率的幾種關鍵方法。 優化用戶體驗 用戶體驗…