spark任務的提交流程

目錄

    • spark任務的提交流程
      • 1. 資源申請與初始化
      • 2. 任務劃分與調度
      • 3. 任務執行
      • 4. 資源釋放與結果處理
      • 附:關鍵組件協作示意圖
      • 擴展說明

SparkContext介紹

spark任務的提交流程

  1. 用戶創建一個 Spark Context
  2. Spark Context 去找 Cluster Manager 申請資源同時說明需要多少 CPU 和內存等資源;
  3. Cluster Manager 根據用戶提交時設置的參數(CPU、內存),去找 WorkerNode 并啟動 Executor,并介紹 Executor 給Driver;
  4. Driver 會將用戶程序劃分為不同的 stage每個 stage 會有一組完全相同的 task 來構成。這些 task 會作用于一些待處理的數據和不同的分區,在階段劃分和 task 創建完成后Driver 會向 Executor 發送 task
  5. Executor 在接收到 task 后會下載 task 運行時的依賴準備好 task 的運行環境,然后開始執行 task 并實時將 task 的運行環境傳輸給 Driver;
  6. Driver 根據收到的 task 的運行情況來進行狀態更新,不斷的調用 task 來交給 Executor 執行,直到 task 全部執行正確。若超過最大重試次數還沒有執行成功,就會停止 task。

1. 資源申請與初始化

  • 用戶創建SparkContext(SC),SC向集群管理器(如YARN或Standalone Master)申請資源,指定CPU和內存需求
  • 集群管理器根據參數分配資源:
    • Standalone模式:Master直接管理Worker節點,創建Executor并注冊到SC
    • YARN模式:RM創建ApplicationMaster(AM),AM通過NodeManager(NM)申請容器資源啟動Executor

2. 任務劃分與調度

  • Driver(即SC所在進程)將用戶程序解析為DAG圖,根據寬依賴(ShuffleDependency)劃分Stage
    • 寬依賴觸發Shuffle操作,形成ShuffleMapStage
    • 窄依賴合并為ResultStage
  • 每個Stage被拆分為多個Task,每個Task對應一個數據分區的處理邏輯

3. 任務執行

  • Executor接收Task后:
    1. 下載任務依賴的代碼和數據
    2. 創建線程池并行執行Task
    3. 實時向Driver匯報執行進度和狀態
  • 任務失敗時自動重試,超過最大重試次數則作業失敗

4. 資源釋放與結果處理

  • 所有Task執行完成后:
    • Driver生成最終結果(如寫入存儲系統)
    • SC向集群管理器釋放資源
    • 在YARN模式中,AM會主動注銷應用

附:關鍵組件協作示意圖

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81177.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81177.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81177.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++】C++異步編程四劍客:future、async、promise和packaged_task詳解

C異步編程四劍客:future、async、promise和packaged_task詳解 1. 引言 1.1 異步編程的重要性 在現代C編程中,異步操作是提高程序性能和響應能力的關鍵技術。它允許程序在等待耗時操作(如I/O、網絡請求或復雜計算)完成時繼續執行…

2021-10-28 C++判斷完全平方數

緣由判斷一個整數是否為完全平方數-編程語言-CSDN問答 整數用平方法小數用5分法逼近。 int 判斷平方數(int n) {//緣由https://ask.csdn.net/questions/7546950?spm1005.2025.3001.5141int a 1;while (a < n / a)if (a*a < n)a;else if (a*a n)return 1;elsereturn 0…

解決weman框架redis報錯:Class “llluminatelRedis\RedisManager“ not found

解決weman框架redis報錯&#xff1a;Class "llluminatelRedis\RedisManager" not found 報錯解決方案 報錯 解決方案 按照手冊執行 composer require psr/container ^1.1.1 illuminate/redis illuminate/events 安裝redis組件 然后restart重啟就行了 php webman s…

Windows 11 電源計劃進階——通過異類策略優化大小核CPU調度

一、為什么需要手動控制大小核調度&#xff1f; 1.1 Intel 12/13/14代酷睿與Win11的適配現狀 Intel 12代酷睿首次引入混合架構設計&#xff08;P-Core性能核 E-Core能效核&#xff09;&#xff0c;Windows 11雖然原生支持線程調度器&#xff08;Thread Director&#xff09;…

文件系統·linux

目錄 磁盤簡介 Ext文件系統 塊 分區 分組 inode 再談inode 路徑解析 路徑緩存 再再看inode 掛載 小知識 磁盤簡介 磁盤&#xff1a;一個機械設備&#xff0c;用于儲存數據。 未被打開的文件都是存在磁盤上的&#xff0c;被打開的加載到內存中。 扇區&#xff1a;是…

如何使用redis做限流(golang實現小樣)

在實際開發中,限流(Rate Limiting)是一種保護服務、避免接口被惡意刷流的常見技術。常用的限流算法有令牌桶、漏桶、固定窗口、滑動窗口等。由于Redis具備高性能和原子性操作,常常被用來實現分布式限流。 下面給出使用Golang結合Redis實現簡單限流的幾種常見方式(以“固定…

手寫ES6 Promise() 相關函數

手寫 Promise() 相關函數&#xff1a; Promise()、then()、catch()、finally() // 定義三種狀態常量 const PENDING pending const FULFILLED fulfilled const REJECTED rejectedclass MyPromise {/*定義狀態和結果兩個私有屬性:1.使用 # 語法&#xff08;ES2022 官方私有字…

Redis學習專題(五)緩存穿透、緩存擊穿、緩存雪崩

目錄 一、緩存穿透 緩存穿透的原因&#xff1a; 緩存穿透的現象&#xff1a; 緩存穿透的解決辦法&#xff1a; 二、緩存擊穿 緩存擊穿的原因&#xff1a; 緩存擊穿的現象&#xff1a; 緩存擊穿的解決辦法: 三、緩存雪崩 緩存雪崩的原因&#xff1a; 緩存雪崩的現象&…

【Hadoop】大數據技術之 MapReduce

目錄 一、MapReduce概述 1.1 MapReduce 定義 1.2 MapReduce優缺點 1.3 MapReduce 核心思想 1.4 MapReduce 進程 1.5 常用數據序列化類型 1.6 MapReduce 編程規范 二、WordCound 案例 2.1 環境準備 2.2 編寫程序 三、MapReduce 工作流程 一、MapReduce概述 1.1 MapRe…

國際前沿知識系列三:解決泛化能力不足問題

目錄 國際前沿知識系列三&#xff1a;解決泛化能力不足問題 一、子類建模法與分類建模法在腦區應變預測中的應用 &#xff08;一&#xff09;子類建模法 案例分析 &#xff08;二&#xff09;分類建模法 案例分析 二、基于遷移學習和數據融合的大腦應變預測模型改良 &a…

client.chat.completions.create方法參數詳解

response client.chat.completions.create(model"gpt-3.5-turbo", # 必需參數messages[], # 必需參數temperature1.0, # 可選參數max_tokensNone, # 可選參數top_p1.0, # 可選參數frequency_penalty0.0, # 可選參數presenc…

iOS 15.4.1 TrollStore(巨魔商店)安裝教程詳解:第二篇

?? iOS 15.4.1 TrollStore(巨魔商店)安裝教程詳解 ? 前言??? 如何安裝 TrollStore?第一步:打開 Safari 瀏覽器第二步:選擇對應系統版本安裝方式第三步:訪問地址,下載配置文件(plist)第四步:安裝配置文件第五步:“jailbreaks.app” 請求安裝 TrollHelper第六步…

SQL的RAND用法和指定生成隨機數的范圍

SQL中的RAND函數能夠滿足多種隨機數生成的需求。通過合理地使用種子、結合一些SQL語句&#xff0c;我們可以實現靈活的隨機數生成。在數據填充、數據處理、數據分析中經常需要用RAND生成的隨機數。 用法1 生成隨機浮點數&#xff0c;其返回值在0&#xff08;包括0&#xff09;…

AppAgentx 開源AI手機操控使用分享

項目地址: https://appagentx.github.io/?utm_sourceai-bot.cn GitHub倉庫: https://github.com/Westlake-AGI-Lab/AppAgentX/tree/main arXiv技術論文:https://arxiv.org/pdf/2503.02268 AppAgentx是什么: AppAgentX 是西湖大學推出的一種自我進化式 GUI 代理框架。它通過…

[原創]X86C++反匯編01.IDA和提取簽名

https://bpsend.net/thread-415-1-1.html 用VC6.0新建一個控制臺工程 編譯成 debug 和 Release 2個版本 應ida分別查看2種版本的程序 高版本ida 可能會直接定位到函數入口,正常情況下,我們需要先調試找到關鍵,找到關鍵以后點再通過調試設置api斷點,讀寫斷點等,找到程序的關鍵…

vs2022 Qt Visual Studio Tools插件設置

安裝之后&#xff0c;需要指定QT中msvc編譯器的位置&#xff0c;點擊下圖Location右邊的按鈕即可 選擇msvc2022_64\bin目錄下的 qmake.exe 另一個問題,雙擊UI文件不能打開設計界面 設置打開方式 選擇msvc2022_64\bin目錄下的designer.exe 確定即可 然后設置為默認值即可 確定…

C++代碼隨想錄刷題知識分享-----兩數之和(哈希表)三種算法逐個擊破

題目描述 給定一個整數數組 nums 和一個目標值 target&#xff0c;請你在該數組中找出和為目標值的那兩個整數&#xff0c;并返回它們的下標。 每個輸入只對應一個答案。同一個元素不能重復使用。你可以按任意順序返回答案。 示例 輸入&#xff1a; nums [2, 7, 11, 15], ta…

List介紹

什么是List 在集合框架中&#xff0c;List是一個接口&#xff0c;繼承自Collection Collection也是一個接口&#xff0c;該接口中規范了后序容器中常用的一些方法 Iterable也是一個接口&#xff0c;表示實現該接口的類是可以逐個元素進行遍歷的&#xff0c;具體如下&#xff1…

深入理解API:從概念到實戰

引言 在現代軟件開發中&#xff0c;API&#xff08;Application Programming Interface&#xff09;無處不在。無論是調用第三方服務、訪問操作系統功能&#xff0c;還是使用編程語言的標準庫&#xff0c;API 都扮演著關鍵角色。但對于許多初學者來說&#xff0c;API 仍然是一…

織夢dedecms登錄后臺出現Safe Alert Request Error step 2

今天一個客戶在安裝織夢dedecms時候&#xff0c;安裝完成后登錄后臺就出現“Safe Alert Request Error step 2”&#xff0c;常用dedecms的朋友都知道&#xff0c;這是織夢的安全機制&#xff0c;在程序覺得有sql注入等攻擊時候&#xff0c;會有這種提示。 1、起初我以為是文件…