大數據Spark(六十二):Spark基于Yarn提交任務流程

文章目錄

Spark基于Yarn提交任務流程

一、Yarn-Client模式

1、提交命令

2、任務執行流程

二、Yarn-Cluster模式

1、提交命令

2、任務執行流程


Spark基于Yarn提交任務流程

在Yarn模式下,Spark的任務提交同樣根據Driver程序運行的位置不同,分為client和cluster兩種模式。以下分別介紹這兩種模式。

一、Yarn-Client模式

1、提交命令

在啟動Yarn集群后,可在node5節點上執行以下命令以Client模式提交任務:

[root@node5 ~]# cd /software/spark-3.5.5/bin/
#第一種方式
[root@node5 bin]# ./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000#第二種方式
[root@node5 bin]# ./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000

以上命令中注意如下幾點:

  • “--master”參數指定Applicatin的Master URL,即運行模式;“--deploy-mode”參數指定Driver程序的部署模式,可選Client/Cluster,默認為Client;“--class”參數指定Application的主類。
  • 以上兩種提交方式命令主要在于是否指定參數“--deploy-mode”,該值默認為Client,也可以不指定。
  • 任務提交后,可以在客戶端看到“SparkSubmit”進程,該進程可以看做為Driver進程;在Yarn集群NodeManager節點可以看到“ExecutorLauncher”和“CoarseGrainedExecutorBackend”進程(Executor進程),ExecutorLauncher實際可以看做AM(內部調用AM的main方法),負責申請資源和啟動Executor,CoarseGrainedExecutorBackend負責執行Task。

2、任務執行流程

Yarn Client模式提交任務流程如下圖所示:

  • Yarn集群啟動,NodeManager(NM)向ResourceManager(RM)匯報資源,RM掌握集群資源。

  • 客戶端提交Application程序,在客戶端啟動 Driver 進程。

  • Driver 向 RM申請啟動 ExecutorLauncher(AM)。

  • RM收到請求,隨機選擇一臺NM啟動ExecutorLauncher(EL)。

  • EL 啟動后,向 RM申請啟動 Executor 所需的資源(Container)。

  • RM分配資源,EL在相應的 NM上啟動 Executor。

  • Executor 啟動后,會向Driver注冊,Driver將task發送到Executor,Task執行情況和結果會返回給 Driver 。

總結:在Yarn-Client模式中,Driver進程在提交Application的客戶端節點上運行,客戶端可以直接查看Task的執行情況和結果。由于Driver與集群中的Executor需要頻繁通信,如果在客戶端提交大量Application,可能會導致客戶端的網絡負載過高。因此,該模式適用于測試環境,不建議在生產環境中使用。

二、Yarn-Cluster模式

1、提交命令

啟動Yarn集群后,在node5節點上執行如下命令以Yarn Cluster模式提交任務:

[root@node5 ~]# cd /software/spark-3.5.5/bin/
[root@node5 bin]# ./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.13-3.5.5.jar 1000

以上命令中注意如下幾點:

  • “--master”參數指定Applicatin的Master URL,即運行模式;“--deploy-mode”參數指定Driver程序的部署模式,可選Client/Cluster,默認為Client;“--class”參數指定Application的主類。
  • 任務提交后,可以在NodeManager節點上看到”ApplicationMaster”和“YarnCoarseGrainedExecutorBackend”進程,ApplicationMaster負責為當前Application申請資源、啟動Executor、調度Task;“YarnCoarseGrainedExecutorBackend”負責task執行。
  • Yarn-Cluster模式提交任務后,在客戶端看不到任務結果,需要通過Yarn WebUI查看日志,查看結果。查看日志時,需要啟動Yarn歷史日志服務(命令:mapred --daemon start historyserver)。

2、任務執行流程

Yarn Cluster模式提交任務流程如下圖所示:

  • Yarn集群啟動,NodeManager(NM)向ResourceManager(RM)匯報資源,RM掌握集群資源。

  • 客戶端提交Application應用程序,向 RM請求啟動 ApplicationMaster(AM)。

  • RM隨機在某個NM上啟動 AM(此時,AM相當于Driver端)。

  • AM 啟動后,向 RM申請啟動 Executor 所需的資源(請求一批Container)。

  • RM分配資源,AM 在相應的 NM上啟動 Executor。

  • Executor 啟動后,向 AM(Driver)注冊,AM發送task給Executor并監控task執行,結果返回給AM。

總結:在Yarn-Cluster模式中,ApplicationMaster(AM)相當于Driver進程,運行在集群中的某個NodeManager上。由于Driver進程在集群內部運行,客戶端提交任務后無法直接查看Task的執行結果,需要通過集群的Web UI查看。這種模式適合生產環境,因為每個Application的Driver進程會隨機在集群中的某個NodeManager上啟動,避免了在客戶端模式下可能出現的網絡負載集中問題。


  • 📢博客主頁:https://lansonli.blog.csdn.net
  • 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
  • 📢本文由 Lansonli 原創,首發于 CSDN博客🙉
  • 📢停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活?

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

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

相關文章

Docker 高級管理-容器通信技術與數據持久化

(1)創建一個叫 my-net 的 bridge 類型的網絡(2)查看都有哪些網絡(3)運行一個容器井連接到新建的 my-net 網絡(4)運行一個容器井加入到 my-net 網絡2:Host 模式由于使用了 Host 模式,容器會直接使用宿主機的網絡端口,因此可以直接在宿主機上通過 localhos…

在 Ubuntu 24.04 中安裝 Python 2.7、pip 及 mysqlclient==1.4.6 的完整指南

在 Ubuntu 24.04 中安裝 Python 2.7、pip 及 mysqlclient1.4.6 的完整指南 前言 隨著 Ubuntu 24.04 的發布,許多舊的軟件包已被移除或更新,但老項目需要 Python 2 。本文將詳細介紹自己如何在 Ubuntu 24.04 中成功安裝 Python 2.7、pip 以及 mysqlclient…

doker以及網站案例

一.docker搭建1.安裝dockerapt-get install docker.io docker-compose2.編寫配置文件(注意路徑正確)vim /etc/systemd/system/docker.service.d/http-proxy.conf[Service] Environment"HTTP_PROXYhttp://科學上網訪問的ip:端口" Environment&q…

【HarmonyOS Next之旅】DevEco Studio使用指南(四十一) -> 獲取自定義編譯參數

目錄 1 -> HAP/HSP運行時獲取編譯構建參數 1.1 -> 生成BuildProfile類文件 1.2 -> 在代碼中獲取構建參數 1.3 -> 默認參數 1.4 -> 自定義參數 2 -> HAR運行時獲取編譯構建參數 2.1 -> 生成BuildProfile類文件 2.2 -> 在代碼中獲取構建參數 2.…

NGINX系統基于PHP部署應用

目錄 部署 配置 部署 準備三臺主機,一臺服務端,兩臺客戶端; 1.在兩臺客戶端主機上分別安裝 MySQL; [rootmaster /]#yum install -y mysql nginx; [rootmaster /]#yum install -y nginx PHP; [rootmaster /]#yum install -y php PHP-m…

ip地址可以精確到什么級別?如何獲取/更改ip地址

IP地址的精確級別和獲取/更改方式取決于其類型(公網IP vs 內網IP),以下是詳細解答: 一、IP地址的精確級別 1. 公網IP地址(互聯網可見) 定位級別精度范圍說明國家/地區級約95%準確通過IP數據庫(…

Linux(Centos 7.6)命令詳解:useradd

1.命令作用創建新用戶或更新默認的新用戶信息(create a new user or update default new user information)2.命令語法Usage: useradd [options] LOGINuseradd -Duseradd -D [options]3.參數詳解OPTION:-b, --base-dir BASE_DIR,新帳戶的主目錄的基本目錄&#xff1…

異步I/O庫:libuv、libev、libevent與libeio

異步I/O編程是現代高性能網絡服務的核心,而libuv、libev、libevent、libeio這四個庫則是這一領域的常青樹。它們雖同屬事件驅動模型,卻在設計哲學、適用場景和實現細節上各具特色。本文將深入剖析其異同。 一、共同點:異步事件驅動 事件循環&…

go go go 出發咯 - go web開發入門系列(四) 數據庫ORM框架集成與解讀

go go go 出發咯 - go web開發入門系列(四) 數據庫ORM框架集成與解讀 往期回顧 go go go 出發咯 - go web開發入門系列(一) helloworldgo go go 出發咯 - go web開發入門系列(二) Gin 框架實戰指南go go g…

CD47.【C++ Dev】list的模擬實現(2)

目錄 1.const修飾的迭代器的實現 方法1:分成兩個類 完整代碼 方法2:STL庫的寫法 2.STL庫的第三個模版參數T*的解釋 ->->的簡寫語法 3.其他成員函數 insert erase push_back、push_front、pop_front、pop_back size clear 析構函數~list() 拷貝構造函數(★…

UI前端與數字孿生融合新領域拓展:智慧教育的虛擬實驗室建設

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩!一、引言:虛擬實驗室 —— 打破教育邊界的技術革命傳統實驗教學正面臨 “設備昂貴、…

7. TCP 和 UDP 的區別

總結 TCP 面向連接,需要三次握手建立連接,UDP 無連接,不需要握手,直接發送數據。UDP 有較好的實時性,效率比 TCP 高。TCP 面向字節流,實際上是 TCP 把數據看成一連串無結構的字節流,UDP 是面向報…

iOS Widget 開發-7:TimelineProvider 機制全解析:構建未來時間線

在 WidgetKit 中,TimelineProvider 是小組件生命周期的核心機制之一。它控制著 數據獲取時機、展示內容 與 刷新策略,是實現時間驅動內容更新的基礎。 本文將介紹 TimelineProvider 的工作原理、設計模式、常見場景與高級用法,幫助大家構建智…

基于PHP/MySQL的企業培訓考試系統源碼,高并發、穩定運行,源碼開源可二開

溫馨提示:文末有資源獲取方式這是一款專為企業設計的開源培訓考試系統,采用PHPMySQL技術棧開發,具有高并發處理能力和穩定運行特性。系統源碼完全開放,支持二次開發,可滿足各類企業的培訓考核需求。核心功能特點1. 高性…

時序數據庫InfluxDB

一.定義 時序數據庫 是一種專門用于高效存儲和查詢帶有時間戳的數據的數據庫。如果你的數據是隨著時間變化而不斷產生,并且你想知道過去某一時刻發生了什么,那么你應該用時序數據庫。 這類數據通常具有以下特征: 數據點按時間順序不斷寫入…

2025.07.09華為機考真題解析-第三題300分

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 03. 博物館安保攝像頭配置 問題描述 A先生負責為一家新開的博物館設計安保監控系統。博物館有多個展廳需要監控,每個展廳都有不同的面積。現在有多種型號的監控攝像頭可供選擇,每…

存儲過程封裝:復雜業務邏輯的性能優化

存儲過程作為數據庫層面的重要功能,能夠顯著提升復雜業務邏輯的執行效率。以下是存儲過程在性能優化中的核心優勢、實現策略和實際應用場景。一、存儲過程的核心優勢?網絡傳輸壓縮?存儲過程將多條SQL語句封裝為單次調用,相比應用層多次請求可減少60%-8…

逗號分隔字段統計秘籍:一條SQL實現逗號分割字段的數量分析

一、問題場景與痛點 在數據庫設計中,經常會遇到統計某一些數據的最大數量最小數量等,特別是**逗號分隔字段 **的統計會顯得非常困難 下面以我生產上遇到的一個問題講解: 有個需求是在o_work_order表中統計sn字段中哪個工單號的數量最多&#…

數據庫性能優化指南:解決ORDER BY導致的查詢性能問題( SQL Server )

數據庫性能優化指南:解決ORDER BY導致的查詢性能問題 問題描述 在300萬行的INTERFACE_INTERACTION_LOG表中執行以下查詢: SELECT TOP 1 * FROM INTERFACE_INTERACTION_LOG WHERE 1 1AND (SENDSTATUS 0 OR SENDSTATUS -1)AND SENDMETHOD POSTAND ERRO…

Centos 7下使用C++使用Rdkafka庫實現生產者消費者

1. 了解 Kafka Apache Kafka 是一個分布式流處理平臺,核心功能包括: 發布/訂閱消息系統:解耦生產者和消費者 分布式存儲:持久化、容錯的消息存儲 流處理:實時處理數據流 核心概念: 概念說明BrokerKaf…