Spark架構與作業執行流程簡介

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

Spark架構與作業執行流程簡介 博客分類: spark

Local模式

運行Spark最簡單的方法是通過Local模式(即偽分布式模式)。

????運行命令為:./bin/run-example org.apache.spark.examples.SparkPi local

基于standalone的Spark架構與作業執行流程

Standalone模式下,集群啟動時包括Master與Worker,其中Master負責接收客戶端提交的作業,管理Worker。提供了Web展示集群與作業信息。

?

名詞解釋:

1. Standalone模式下存在的角色。

Client:客戶端進程,負責提交作業到Master。

Master:Standalone模式中主控節點,負責接收Client提交的作業,管理Worker,并命令Worker啟動Driver和Executor。

Worker:Standalone模式中slave節點上守護進程,負責管理本節點的資源,定期向Master匯報心跳,接收Master的命令,啟動Driver和Executor。

Driver: 一個Spark作業運行時包括一個Driver進程,也是作業的主進程,負責作業的解析、生成Stage并調度Task到Executor上。包括DAGScheduler,TaskScheduler。

Executor:即真正執行作業的地方,一個集群一般包含多個Executor,每個Executor接收Driver的命令Launch Task,一個Executor可以執行一到多個Task。

2.作業相關的名詞解釋

Stage:一個Spark作業一般包含一到多個Stage。

Task:一個Stage包含一到多個Task,通過多個Task實現并行運行的功能。

DAGScheduler: 實現將Spark作業分解成一到多個Stage,每個Stage根據RDD的Partition個數決定Task的個數,然后生成相應的Task set放到TaskScheduler中。

TaskScheduler:實現Task分配到Executor上執行。

?

提交作業有兩種方式,分別是Driver(作業的master,負責作業的解析、生成stage并調度task到,包含DAGScheduler)運行在Worker上,Driver運行在客戶端。接下來分別介紹兩種方式的作業運行原理。

Driver運行在Worker上

????通過org.apache.spark.deploy.Client類執行作業,作業運行命令如下:

????????./bin/spark-class org.apache.spark.deploy.Client launch spark://host:port file:///jar_url org.apache.spark.examples.SparkPi spark://host:port

????作業執行流如圖1所示。

圖1

作業執行流程描述:

  1. 客戶端提交作業給Master
  2. Master讓一個Worker啟動Driver,即SchedulerBackend。Worker創建一個DriverRunner線程,DriverRunner啟動SchedulerBackend進程。
  3. 另外Master還會讓其余Worker啟動Exeuctor,即ExecutorBackend。Worker創建一個ExecutorRunner線程,ExecutorRunner會啟動ExecutorBackend進程。
  4. ExecutorBackend啟動后會向Driver的SchedulerBackend注冊。SchedulerBackend進程中包含DAGScheduler,它會根據用戶程序,生成執行計劃,并調度執行。對于每個stage的task,都會被存放到TaskScheduler中,ExecutorBackend向SchedulerBackend匯報的時候把TaskScheduler中的task調度到ExecutorBackend執行。
  5. 所有stage都完成后作業結束。

Driver運行在客戶端

????直接執行Spark作業,作業運行命令如下(示例):

????????./bin/run-example org.apache.spark.examples.SparkPi spark://host:port

????作業執行流如圖2所示。

?

圖2

作業執行流程描述:

  1. 客戶端啟動后直接運行用戶程序,啟動Driver相關的工作:DAGScheduler和BlockManagerMaster等。
  2. 客戶端的Driver向Master注冊。
  3. Master還會讓Worker啟動Exeuctor。Worker創建一個ExecutorRunner線程,ExecutorRunner會啟動ExecutorBackend進程。
  4. ExecutorBackend啟動后會向Driver的SchedulerBackend注冊。Driver的DAGScheduler解析作業并生成相應的Stage,每個Stage包含的Task通過TaskScheduler分配給Executor執行。
  5. 所有stage都完成后作業結束。

?

基于Yarn的Spark架構與作業執行流程

這里Spark AppMaster相當于Standalone模式下的SchedulerBackend,Executor相當于standalone的ExecutorBackend,spark AppMaster中包括DAGScheduler和YarnClusterScheduler。

????Spark on Yarn的執行流程可以參考http://www.csdn.net/article/2013-12-04/2817706--YARN?spark on Yarn部分。
????

? ? ?這里主要介紹一下Spark ApplicationMaster的主要工作。代碼參考Apache Spark 0.9.0版本ApplicationMaster.scala中的run()方法。

???????? 步驟如下:

  1. 設置環境變量spark.local.dir和spark.ui.port。NodeManager啟動ApplicationMaster的時候會傳遞LOCAL_DIRS(YARN_LOCAL_DIRS)變量,這個變量會被設置為spark.local.dir的值。后續臨時文件會存放在此目錄下。
  2. 獲取NodeManager傳遞給ApplicationMaster的appAttemptId。
  3. 創建AMRMClient,即ApplicationMaster與ResourceManager的通信連接。
  4. 啟動用戶程序,startUserClass(),使用一個線程通過發射調用用戶程序的main方法。這時候,用戶程序中會初始化SparkContext,它包含DAGScheduler和TaskScheduler。
  5. 向ResourceManager注冊。
  6. 向ResourceManager申請containers,它根據輸入數據和請求的資源,調度Executor到相應的NodeManager上,這里的調度算法會考慮輸入數據的locality。

?

?

http://m635674608.iteye.com/admin/blogs/new

轉載于:https://my.oschina.net/xiaominmin/blog/1597267

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

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

相關文章

Spring boot整合Mongodb

最近的項目用了Mongodb,網上的用法大多都是七零八落的沒有一個統一性,自己大概整理了下,項目中的相關配置就不敘述了,由于spring boot的快捷開發方式,所以spring boot項目中要使用Mongodb,只需要添加依賴和…

nodejs和Vue和Idea

文章目錄Vue環境搭建Idea安裝Idea中配置Vue環境Node.js介紹npm介紹Vue.js介紹[^3]Idea介紹Vue環境搭建 概述:vue環境搭建:需要npm(cnpm),而npm內嵌于Node.js,所以需要下載Node.js。 下載Node.js&#xff1…

Spring MVC上下文父子容器

2019獨角獸企業重金招聘Python工程師標準>>> Spring MVC上下文父子容器 博客分類: java spring 在Spring MVC的啟動依賴Spring框架,有時候我們在啟動Spring MVC環境的時候,如果配置不當的話會造成一些不可預知的結果。下面主要介紹…

12.7 Test

目錄 2018.12.7 TestA 序列sequence(迭代加深搜索)B 轟炸bomb(Tarjan DP)C 字符串string(AC自動機 狀壓DP)考試代碼AC2018.12.7 Test題目為2018.1.4雅禮集訓。 時間:4.5h期望得分:010010實際得分:010010 A 序列sequence(迭代加深搜索) 顯然可…

word文檔中統計總頁數_如何在Google文檔中查找頁數和字數統計

word文檔中統計總頁數Whether you’ve been given an assignment with a strict limit or you just like knowing how many words you’ve written, Google Docs has your back. Here’s how to see exactly how many words or pages you’ve typed in your document. 無論您是…

vue 入門notes

文章目錄vue一、js基礎二、封裝緩存三、組件1、組件創建、引入、掛載、使用2、組件間的傳值- 父組件主動獲取子組件的數據和方法(子組件給父組件傳值):- 子組件主動獲取父組件的數據和方法(父組件給子組件傳值)&#x…

spring集成 JedisCluster 連接 redis3.0 集群

2019獨角獸企業重金招聘Python工程師標準>>> spring集成 JedisCluster 連接 redis3.0 集群 博客分類&#xff1a; 緩存 spring 客戶端采用最新的jedis 2.7 1. maven依賴&#xff1a; <dependency> <groupId>redis.clients</groupId> <artifact…

html-盒子模型及pading和margin相關

margin: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>* {margin: 0;padding: 0;}/*margin 外邊距 元素與其他元素的距離&#xff08;邊框以外的距離&#xff09;一…

火狐瀏覽器復制網頁文字_從Firefox中的網頁鏈接的多種“復制”格式中選擇

火狐瀏覽器復制網頁文字Tired of having to copy, paste, and then format links for use in your blogs, e-mails, or documents? Then see how easy it is to choose a click-and-go format that will save you a lot of time and effort with the CoLT extension for Firef…

vscode配置、使用git

文章目錄一、下載、配置git二、vscode配置并使用git三、記住密碼一、下載、配置git 1、git-win-x64點擊下載后安裝直接安裝&#xff08;建議復制鏈接用迅雷等下載器下載&#xff0c;瀏覽器太慢&#xff0c;記住安裝位置&#xff09;。 2、配置git環境變量&#xff1a; 右鍵 此…

BTrace功能

2019獨角獸企業重金招聘Python工程師標準>>> BTrace功能 一、背景 在生產環境中可能經常遇到各種問題&#xff0c;定位問題需要獲取程序運行時的數據信息&#xff0c;如方法參數、返回值、全局變量、堆棧信息等。為了獲取這些數據信息&#xff0c;我們可以…

.NET(c#) 移動APP開發平臺 - Smobiler(1)

原文&#xff1a;https://www.cnblogs.com/oudi/p/8288617.html 如果說基于.net的移動開發平臺&#xff0c;目前比較流行的可能是xamarin了&#xff0c;不過除了這個&#xff0c;還有一個比xamarin更好用的國內的.net移動開發平臺&#xff0c;smobiler&#xff0c;不用學習另外…

如何在Vizio電視上禁用運動平滑

Vizio維齊奧New Vizio TVs use motion smoothing to make the content you watch appear smoother. This looks good for some content, like sports, but can ruin the feel of movies and TV shows. 新的Vizio電視使用運動平滑來使您觀看的內容顯得更平滑。 這對于某些內容(例…

無服務器架構 - 從使用場景分析其6大特性

2019獨角獸企業重金招聘Python工程師標準>>> 無服務器架構 - 從使用場景分析其6大特性 博客分類&#xff1a; 架構 首先我應該提到&#xff0c;“無服務器”技術肯定有服務器涉及。 我只是使用這個術語來描述這種方法和技術&#xff0c;它將任務處理和調度抽象為與…

ES6實用方法Object.assign、defineProperty、Symbol

文章目錄1.合并對象 - Object.assign()介紹進階注意用途2.定義對象 - Object.defineProperty(obj, prop, descriptor)3.新數據類型- Symbol定義應用1.合并對象 - Object.assign() 介紹 assign方法可以將多個對象&#xff08;字典&#xff09;&#xff0c;語法&#xff1a;Obj…

Enable Authentication on MongoDB

1、Connect to the server using the mongo shell mongo mongodb://localhost:270172、Create the user administrator Change to the admin database: use admindb.createUser({user: "Admin",pwd: "Admin123",roles: [ { role: "userAdminAnyDataba…

windows驅動程序編寫_如何在Windows中回滾驅動程序

windows驅動程序編寫Updating a driver on your PC doesn’t always work out well. Sometimes, they introduce bugs or simply don’t run as well as the version they replaced. Luckily, Windows makes it easy to roll back to a previous driver in Windows 10. Here’s…

運行tomcat報Exception in thread ContainerBackgroundProcessor[StandardEngine[Catalina]]

解決方法1&#xff1a; 手動設置MaxPermSize大小&#xff0c;如果是linux系統&#xff0c;修改TOMCAT_HOME/bin/catalina.sh&#xff0c;如果是windows系統&#xff0c;修改TOMCAT_HOME/bin/catalina.bat&#xff0c; 在“echo "Using CATALINA_BASE: $CATALINA_BASE&q…

new子類會先運行父類的構造函數

發現子類構造函數運行時&#xff0c;先運行了父類的構造函數。為什么呢? 原因&#xff1a;子類的所有構造函數中的第一行&#xff0c;其實都有一條隱身的語句super(); super(): 表示父類的構造函數&#xff0c;并會調用于參數相對應的父類中的構造函數。而super():是在調用父類…

在Windows 7中的Windows Media Player 12中快速預覽歌曲

Do you ever wish you could quickly preview a song without having to play it? Today we look at a quick and easy way to do that in Windows Media Player 12. 您是否曾經希望無需播放就可以快速預覽歌曲&#xff1f; 今天&#xff0c;我們探討一種在Windows Media Play…