Spark的通用運行流程與Spark YARN Cluster 模式的運行流程

Spark的通用運行流程

在這里插入圖片描述

  1. 集群啟動后Worker節點會向Master節點心跳匯報資源
  2. Client向Driver提交APP,根據不同的運行模式在不同的地方創建Driver。
  3. Driver以粗粒度的方式向Master注冊應用并申請資源(在Application執行之前,將所有的資源申請完畢,當資源申請成功后,才會進行任務的調度,當所有的Task執行完成后,才會釋放這部分資源。)(資源有Executer的CPU Core和Mem)
  4. Master根據SparkContext的資源申請情況以及Worker心跳周期內報告的信息決定在哪個Worker上分配資源,也就是Executer。
  5. Worker節點創建Executer進程,Executer向Driver反向注冊。
  6. 資源滿足后(Executer注冊完畢)SparkContext解析代碼,創建RDD,構建DAG,并提交給DAGScheduler分解成Stage(當碰到行動算子時,會催生job,每一個job有一個或多個Stage),然后Stage提交給TaskScheduler,TaskScheduler負責將Task分配給相應的Worker,最后提交Executer執行。
  7. 每個Executer會有一個線程池,Executer通過啟動多個線程(Task)來對RDD的Partition進行并行計算,并向SparkContext報告,直到Task完成。
  8. 所有Task完成后,SparkContext向Master注銷,釋放資源。

Spark YARN Cluster 模式的運行流程

在這里插入圖片描述

  • 第一個階段是把Spark的Driver作為一個ApplicationMaster在YARN集群中啟動
  • 第二個階段是由ApplicationMaster創建應用程序,然后為他向ResourceManager申請資源,并啟動Executer來運行Task,同時監控他的整個過程,直到運行完成。
  1. 在YARN Cluster模式下,Driver運行在ApplicationMaster中。程序啟動后會和ResourceManager通訊申請啟動ApplicationMaster;
  2. ResourceManager收到請求后,通過ResourceScheduler選擇一臺NodeManager分配一個Container,在Container中開啟ApplicationMaster進程;同時在ApplicationMaster中初始化Driver;
  3. ApplicationMaster向ResourceManager注冊,這樣用戶可以直接通過ResourceManager查看應用程序的運行狀態,然后他將采用輪詢的方式通過RPC協議為各個任務申請資源,并監控他們運行狀態直到運行結束;
  4. 一旦ApplicationMaster申請到資源(也就是Container)后,便與對應的NodeManager通信,在NodeManager的Container中啟動CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend啟動后會向Driver中的SparkContext反向注冊并申請Task。
  5. Applicat給ionMaster中的SparkContext分配Task給CoarseGrainedExecutorBackend執行,CoarseGrainedExecutorBackend運行Task并向ApplicationMaster匯報運行的狀態和進度,方便ApplicationMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務。
  6. 應用程序運行完成后,ApplicationMaster向ResourceManager申請注銷并關閉自己。該模式下只能通過YARN查看日志。

YARN的Client提交和Cluster提交的區別

  1. Client模式:
    • 在Client模式下,驅動程序(Spark應用的主程序)運行在提交作業的客戶端機器上,而不是集群中。
    • 驅動程序與集群中的資源不直接交互,而是依賴于客戶機的機器資源,包括CPU,內存和網絡帶寬等。
    • 客戶端負責與ResourceManager通信以請求容器來運行ApplicationMaster和Executor,并且客戶端還會負責監控Spark應用發運行狀態。
    • 由于驅動程序運行在客戶端機器上,因此跟容易地監控和調試作業,開發人員可以直接查看驅動程序的日志和輸出。
  2. Cluster模式:
    1. 在Cluster模式下,驅動程序運行在集群中,由ResourceManager分配資源,作業提交后,ResourceManager會啟動一個ApplicationManager來管理作業的執行,并分配資源給各個Executor
    2. 客戶機僅用于提交作業,一旦作業提交成功后,客戶機的角色就結束了。整個作業運行過程由集群負責,包括資源分配和任務的調度。
    3. 由于作業的執行不依賴于客戶端機器的資源,而是利用整個集群的資源,因此Cluster模式適合用于生產環境中的大規模數據處理。

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

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

相關文章

助力企業前行——ScalaSpark最佳實踐課程

時間飛逝,轉眼間我們的Scala&Spark培訓課程已經圓滿結束!在這段精彩的學習旅程中,你們展現了堅韌、決心和追求卓越的品質。 scala(Scalable Language)是一種多范式的編程語言,其設計的初衷是要集成面向對象編程和函數式編程的…

Cookie與Session知識

目錄 一.Cookie與Session的發展史 1.Cookie的發展史 2.Session的發展史 3.Cookie和Session的關系 4.總結 二.Cookie與Session詳解 1.Cookie 2.Session 3.token 4.總結 三.Django操作Cookie 1.設置Cookie 2.獲取Cookie 3.設置超時時間 4.注銷Cookie 5.登錄功能實…

【機器學習】On the Identifiability of Nonlinear ICA: Sparsity and Beyond

前言 本文是對On the Identifiability of Nonlinear ICA: Sparsity and Beyond (NIPS 2022)中兩個結構稀疏假設的總結。原文鏈接在Reference中。 什么是ICA(Independent component analysis)? 獨立成分分析簡單來說,就是給定很多的樣本X,通…

Springboot-熱部署-IDEA2023

方式一&#xff1a;jrebel 方式二&#xff1a; 1、導入依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <…

C++ DAY08 異常

概念 異常事件&#xff08;如&#xff1a;除 0 溢出&#xff0c;數組下標越界&#xff0c;所要讀取的文件不存在 , 空指針&#xff0c;內存不足 等等&#xff09; 在 C 語言對錯誤的處理是兩種方法&#xff1a; 一是使用整型的返回值標識錯誤&#xff1b; 二是使用 errn…

自動解決IP沖突的問題 利用批處理更改末位IP循環+1直到網絡暢通為止 解放雙手 事半功倍

好久沒出來寫點什么了&#xff0c;難道今天有點時間&#xff0c;順便把這兩天碰到的問題出個解決方法吧。 這幾天去客戶那兒解決網絡問題&#xff0c;因為客戶的網絡是固定的靜態IP&#xff0c;因為沒做MAC綁定&#xff0c;IP固定在本地電腦上&#xff0c;只要上不了網&#xf…

PDF轉Word,1行Python代碼就夠了,免費用

大家好&#xff0c;這里是程序員晚楓。 今年十一假期沒出去旅游&#xff0c;在家里更新一套原創課程&#xff0c;&#x1f449;給小白的《50講Python自動化辦公》。 所有功能&#xff0c;都只需要1行代碼&#xff0c;非常適合非程序員入門Python使用。 目前全網播放量直逼100…

RK3588平臺開發系列講解(嵌入式AI篇)RKNPU詳解

文章目錄 一、CPU、GPU、FPGA和NPU介紹二、CPU、GPU、FPGA和NPU區別三、NPU 應用四、RKNPU沉淀、分享、成長,讓自己和他人都能有所收獲!?? ?? 本篇將給大家介紹什么是RKNPU。 一、CPU、GPU、FPGA和NPU介紹 二、CPU、GPU、FPGA和NPU區別 若考慮成本、功耗、計算能力以及體…

探秘開發app與小程序:一場技術與創新的博弈

app與小程序&#xff1a;一場技術與創新的博弈隨著科技的飛速發展&#xff0c;移動應用程序已經成為我們日常生活中不可或缺的一部分。在這個充滿競爭的時代&#xff0c;企業紛紛投身于開發各類移動應用&#xff0c;以期在市場中占據一席之地。然而&#xff0c;面對多樣化的應用…

PC訪問華為昇騰開發板的摸索過程

作者&#xff1a;朱金燦 來源&#xff1a;clever101的專欄 為什么大多數人學不會人工智能編程&#xff1f;>>> 最近要折騰華為昇騰開發板&#xff08;官方名稱叫&#xff1a;Atlas 200I DK&#xff09;。先是按照官方教程折騰&#xff1a;Atlas200DK環境部署。我發現…

Spark---轉換算子、行動算子、持久化算子

一、轉換算子和行動算子 1、Transformations轉換算子 1&#xff09;、概念 Transformations類算子是一類算子&#xff08;函數&#xff09;叫做轉換算子&#xff0c;如map、flatMap、reduceByKey等。Transformations算子是延遲執行&#xff0c;也叫懶加載執行。 2)、Transf…

Jina AI 的 8K 向量模型上線 AWS Marketplace,支持本地部署!

在當前多模態 AI 和大模型技術風頭正勁的背景下&#xff0c;Jina AI 始終領跑于創新前沿&#xff0c;技術領先。2023 年 10 月 30 日&#xff0c;Jina AI 隆重推出 jina-embeddings-v2&#xff0c;這是全球首款支持 8192 輸入長度的開源向量大模型&#xff0c;其性能媲美 OpenA…

匯編-PROC定義子過程(函數)

過程定義 過程用PROC和ENDP偽指令來聲明&#xff0c; 并且必須為其分配一個名字(有效的標識符) 。目前為止&#xff0c; 我們所有編寫的程序都包含了一個main過程&#xff0c; 例如&#xff1a; 當要創建的過程不是程序的啟動過程時&#xff0c; 就用RET指令來結束它。RET強制…

Bean依賴注入注解開發

value Value("xfy")private String userName;private String userName;Value("xiao")public void setUserName(String userName) {this.userName userName;} Autowired // 根據類型進行注入 如果同一類型的Bean有多個&#xff0c;嘗試根基名字進行二次…

AIGC,ChatGPT AI繪畫 Midjourney 注冊流程詳細步驟

AI 繪畫,Midjourney完成高清圖片繪制,輕松掌握AI工具。 前期準備: ① 一個能使用的谷歌賬號 ② 可以訪問外網 Midjourney注冊 1.進入midjourney官網https://www.midjourney.com 點擊左下角”Join the Beta”,就可以注冊,第一次使用的小伙伴會彈出提示,只需要點擊Acc…

2019年12月 Scratch(三級)真題解析#中國電子學會#全國青少年軟件編程等級考試

Scratch等級考試(1~4級)全部真題?點這里 一、單選題(共25題,每題2分,共50分) 第1題 怎樣修改圖章的顏色? A:只需要一個數字來設置顏色 B:設置RGB的值 C:在畫筆中設置顏色、飽和度、亮度 D:在外觀中設置或修改角色顏色特效 答案:D 在外觀中設置或修改角色顏色特…

【深度學習】臉部修復,CodeFormer,論文,實戰

代碼&#xff1a; https://github.com/sczhou/CodeFormer 論文&#xff1a;https://arxiv.org/abs/2206.11253 Towards Robust Blind Face Restoration with Codebook Lookup Transformer 文章目錄 論文摘要1 引言2 相關工作**4 實驗****4.1 數據集****4.2 實驗設置和指標***…

【ArrayList是如何擴容(ArrayList、LinkedList、與Vector的區別)】

ArrayList、LinkedList、與Vector的區別 解讀ArrayList 是一個可改變大小的數組LinkedList 是一個雙向鏈表Vector 屬強同步類 拓展知識面ArrayList是如何擴容&#xff1f;如何利用List實現LRU&#xff1f; 解讀 List主要有ArrayList、LinkedList與Vector幾種實現。這三者都實現…

[論文筆記] Scaling Laws for Neural Language Models

概覽: 一、總結 計算量、數據集大小、模型參數量大小的冪律 與 訓練損失呈現 線性關系。 三個參數同時放大時,如何得到最佳的性能? 更大的模型 需要 更少的樣本 就能達到相同的效果。 </

開源WIFI繼電器之源代碼

源代碼:WiFiRelay: 基于ESP8285的WiFi繼電器代碼