Spark運行架構

?Spark框架的核心是一個計算引擎,整體來說,它采用了標準master-slave的結構
?如下圖所示,它展示了一個Spark執行時的基本結構,圖形中的Driver表示master,負責管理整個集群中的作業任務調度,圖形中的Executor則是slave,負責實際執行任務。

在這里插入圖片描述
由上圖可以看出,對于Spark框架有兩個核心組件:

Driver

Spark驅動器節點,用于執行Spark任務中的main方法,負責實際代碼的執行工作 ,Driver在Spark作業執行時主要負責;

  1. 將用戶程序轉化為作業(job)
  2. 在Executor之間調度任務(task)
  3. 跟蹤Executor的執行情況
  4. 通過UI展示查詢運行情況

實際上,我們無法準確地描述Driver的定義,因為在整個的編程過程中沒有看到任務有關Driver的字眼,所以簡單理解,所謂的Driver就是驅使整個應用運行起來的程序,也稱之為Driver類

Executor

?Spark Executor是集群中工作節點(Worker)中的一個JVM進程,負責在Spark作業中運行具體任務(Task),任務彼此之間相互獨立,Spark應用啟動時,Executor節點被同時啟動,并且始終伴隨著整個Spark應用的生命周期而存在,如果有Executor節點發生了故障或者崩潰,Spark應用也可以繼續執行,會將出錯節點上的任務調度到其他Executor節點上繼續運行。

?Executor有兩個核心功能

  1. 負責運行組成Spark應用的任務,并將結果返回給驅動器進程
  2. 他們通過自身的塊管理器為用戶程序中要求緩存的RDD提供內存式存儲,RDD是直接緩存在Executor進程內的,因此任務可以在運行時充分利用緩存數據加速運算

Master & Worker

?Spark集群的獨立部署環境中,不需要依賴其他的資源調度框架,自身就實現了資源調度的功能,所以環境中還有其他兩個核心組件:Master和Worker,這里的Master是一個進程,主要負責資源的調度和分配,并進行集群的監控等職責,類似于Yarn環境中的RM,而Worker也是進程,一個Worker運行在集群中的一臺服務器上,由Master分配資源對數據進行并行的處理和計算,類似于Yarn環境中NM

ApplicationMaster

?Hadoop用戶向Yarn集群提交應用程序時,提交程序中應該包含ApplicationMaster,用于向資源調度器申請執行任務的資源容器Container,運行用戶自己的程序任務job,監控整個任務的執行,跟蹤整個任務的狀態,處理任務失敗等異常情況

?說的簡單點就是,ResourceManager(資源)和Driver(計算)之間的解耦合靠的就是ApplicationMaster

Executor與Core

?Spark Executor是集群中運行在工作節點(Worker)中的一個JVM進程,是整個集群中的專門用于計算的節點,在提交應用中,可以提供參數指定計算節點的個數,以及對應的資源,這里的資源一般指的是工作節點Executor的內存大小和使用虛擬核(Core)數量。

應用程序相關啟動參數如下:

名稱說明
–num-executors配置Executor的數量
–executor-memory配置每個Executor的內存大小
–executor-cores配置每個Executor的虛擬CPU core數量

并行度

?在分布式計算框架中一般都是多個任務同時執行,由于任務分布在不同的計算節點進行計算,所以能夠真正地實現多任務并行執行,我們將整個集群并行執行任務的數量稱之為并行度,那么一個作業到底并行度是多少呢?這個取決于框架的默認配置,應用程序也可以在運行過程中動態修改。

Spark核心編程

Spark計算框架為了能夠進行高并發和高吞吐的數據處理,封裝了三大數據結構,用于處理不同的應用場景,三大數據結構分別是:

  1. RDD:彈性分布式數據集
  2. 累加器:分布式共享只寫變量
  3. 廣播變量:分布式共享只讀變量

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

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

相關文章

基于未合入PR創建增量patch的git管理方法

目錄前言準備操作步驟精準移植基礎PR到本地分支修改代碼鴻蒙編譯、調試、測試具體編譯指令、測試步驟這里帶過,這不是本文論述重點創建diff文件工作倉庫應用最新patch總結前言 作為程序員,多人協同開發同一個需求是正常的。即使是自己一個人搞需求&…

git真正更新項目

背景 Fetch all remote后flutter代碼都拉下來,都是Android項目應用不上;git–>update project才生效!!!

AI時代如何拓展Web前端開發的邊界

文章目錄 1 從“頁面仔”到“智能體驗構建者”——前端的變與不變2 AI 如何重塑 Web 前端:從開發到用戶體驗的革命2.1 AI 賦能開發效率:前端工程師的“超級外掛”2.1.1 智能代碼輔助與生成2.1.2 自動化測試與 Bug 定位 2.2 AI 提升用戶體驗,構…

chrome webdrive異常處理-session not created falled opening key——仙盟創夢IDE

注冊表錯誤 :EKKOK:chromeinstallerut1 Lgoogle update settings.cc:26b falled opening key .( e\Update\ClientStateMedium 8A69D345-D564-463c-AFF1-A69D9E530F96} to set usagestats 連接超時 disconnected: received Inspector.detached eventfailed to check if windo…

【Java EE初階 --- 多線程(進階)】JUC

樂觀學習,樂觀生活,才能不斷前進啊!!! 我的主頁:optimistic_chen 我的專欄:c語言 ,Java 歡迎大家訪問~ 創作不易,大佬們點贊鼓勵下吧~ 文章目錄 JUC組件ReentrantLock與s…

免費靜態網站搭建

免費靜態網站搭建 內容簡介搭建步驟GitHub倉庫創建Jekyll安裝使用Jekyll安裝指南Jekyll快速搭建測試Jekyll后續玩法 內容簡介 🚩Tech Contents:GithubPage/Jekyll/Custom URLs 🐱GitHub Pages:靜態網站托管服務,自動將…

MySQL 8.0 OCP 1Z0-908 題目解析(21)

題目81 Choose two. Examine the modified output: mysql> SHOW SLAVE STATUS\G *************************** 1. row ***************************Slave_IO_Running: YesSlave_SQL_Running: YesSeconds_Behind_Master: 1612Seconds_Behind_Master value is steadily gro…

Web前端開發-HTML、CSS

文章目錄是什么?HTML快速入門VS Code開發工具基礎標簽&樣式新浪新聞-標題標題排版標題樣式標題樣式-1標題樣式-2超鏈接新浪新聞-正文新浪新聞-正文排版新浪新聞-頁面布局表格標簽表單標簽表單標簽-表單項是什么? HTML快速入門 VS Code開發工具 基礎標…

Vue.js狀態管理: Vuex在大型項目中的實際應用

# Vue.js狀態管理: Vuex在大型項目中的實際應用 ## 一、Vuex核心架構與大型項目適配 ### 1.1 狀態管理(State Management)的本質需求 在復雜前端系統中,組件間的數據傳遞成本隨項目規模呈指數級增長。根據Vue官方統計,超過500個組…

C++開發:結構體作為函數形參的值傳遞與引用傳遞

筆者定義了一個結構體變量,用于作為函數的形參,定義如下:struct CardParameters {float* Average nullptr;int averageSize 0; }; 需求描述:結構體變量作為函數的形參,在函數體中給指針變量分配內存空間并賦值&#…

【unity小技巧】在 Unity 中將 2D 精靈添加到 3D 游戲中,并實現陰影投射效果,實現類《八分旅人》《饑荒》等等的2.5D游戲效果

注意:考慮到unity小技巧的內容比較多,我將該內容分開,并全部整合放在【unity小技巧】專欄里,感興趣的小伙伴可以前往逐一查看學習。 文章目錄 前言實戰1、在3D場景中,新建一些不同形狀的2D圖片2、我們新建一個Lit材質3…

Rust 內存結構:深入解析

Rust 的內存管理系統是其核心特性之一,結合了手動內存管理的效率與自動內存管理的安全性。以下是 Rust 內存結構的全面解析: 內存布局概覽 ----------------------- | 代碼段 (Text) | 只讀,存儲可執行指令 ----------------------…

【Chrome】‘Good助手‘ 擴展程序使用介紹

這是我開發的一款 Chrome 瀏覽器擴展程序,目前主要集成了‘AI對話‘,’總結頁面’,‘基于頁面問答’等功能,最近幾天我也將寫一篇介紹如何開發 chrome 擴展程序的博客,帶你了解如何開發屬于自己的插件。 注&#xff1…

基于mysql8.0.27部署1主2從的MHA集群

目錄 一、mysql概述 1.1、關系型數據庫 1.2、MySQL數據庫 1.3、RDBMS術語 二、mysql的部署 2.1、拉取mysql 2.2、解壓 2.3、 改名 2.4、 指定安裝文件位置 2.5、 創建用戶組 2.6、 修改mysql配置文件 2.7、創建data文件夾 2.8、更改mysql目錄權限 2.9、初始化數據…

Highcharts 安裝使用教程

一、Highcharts 簡介 Highcharts 是一款使用 JavaScript 編寫的前端數據可視化庫,支持折線圖、柱狀圖、餅圖、面積圖、散點圖等多種圖表類型,特點是渲染性能優秀、交互豐富、兼容性強,適合構建商業圖表、統計報表等。 二、Highcharts 安裝方…

Qt中的坐標系

Qt中的坐標系 1.坐標系概念2.數學坐標系VS計算機坐標系3.Qt坐標系4.像素 🌟🌟hello,各位讀者大大們你們好呀🌟🌟 🚀🚀系列專欄:【Qt的學習】 📝📝本篇內容&am…

C++原子類型操作與內存序

C原子類型操作與內存序詳解 這段內容深入介紹了C標準原子類型的操作接口、內存序語義及使用規范。以下是關鍵知識點的分層解析&#xff1a; 一、原子類型的命名規則與類型映射 C提供兩種方式表示原子類型&#xff1a; 模板特化形式&#xff1a;std::atomic<T>別名形式…

互聯網摸魚日報(2025-07-07)

互聯網摸魚日報(2025-07-07) 鈦媒體 一場突如其來的“召回潮”&#xff0c;點燃中國制造的“靈魂拷問” 史上最大外賣補貼戰開打&#xff0c;美團聚攏資源迎戰“巨無霸” 1315億加冕潮汕女首富&#xff0c;“最強打工妹”劍指港股 用14346字&#xff0c;講透上市前必做的10…

七牛云Java開發面試題及參考答案

詳述 Java 方法重載的機制與應用場景 Java 方法重載&#xff08;Method Overloading&#xff09;是面向對象編程中的重要特性&#xff0c;它允許同一個類中存在多個同名但參數列表不同的方法。這種機制為代碼提供了靈活性和可讀性&#xff0c;使得開發者可以用統一的方法名處理…

.net core mvc部署到win10本地的Ubuntu上

將一個 .NET Core MVC 應用部署到 Windows 10 上通過 WSL 安裝的 Ubuntu 環境中&#xff0c;可以分為幾個步驟來完成。以下是詳細的指南&#xff1a;準備工作確保你的Ubuntu環境已安裝.NET SDK&#xff1a;首先&#xff0c;你需要在WSL中的Ubuntu上安裝.NET SDK。可以通過以下命…