Standalone模式:Cluster Manager為Spark原生的資源管理器,由Master節(jié)點(diǎn)負(fù)責(zé)資?..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

最新-Spark基本工作原理

發(fā)布時(shí)間:2020-07-24 15:23:02 來源:網(wǎng)絡(luò) 閱讀:422 作者:qq5d79b46dce330 欄目:大數(shù)據(jù)

一、首先介紹Spark的基本概念

1、Cluster Manager:Spark集群的資源管理中心

1>Standalone模式:Cluster Manager為Spark原生的資源管理器,由Master節(jié)點(diǎn)負(fù)責(zé)資源的分配;

2>Haddop Yarn模式:Cluster Manager由Yarn中的ResearchManager負(fù)責(zé)資源的分配

3>Messos模式:Cluster Manager由Messos中的Messos Master負(fù)責(zé)資源管理。

2、Worker Node:Spark集群中可以運(yùn)行Application代碼的工作節(jié)點(diǎn)。

3、Executor:是運(yùn)行在工作節(jié)點(diǎn)(Worker Node)上的一個(gè)進(jìn)程,負(fù)責(zé)執(zhí)行具體的任務(wù)(Task),并且負(fù)責(zé)將數(shù)據(jù)存在內(nèi)存或者磁盤上。

4、Application:Spark Application,是用戶構(gòu)建在 Spark 上的程序

如圖:
最新-Spark基本工作原理

1>包含了Driver,和一批應(yīng)用獨(dú)立的Executor進(jìn)程

2>每一個(gè)Application包含多個(gè)作業(yè)Job,每個(gè)Job包含多個(gè)Stage階段,每個(gè)stage包含多個(gè)Task。

3>Job:作業(yè),一個(gè)Job包含多個(gè)RDD及作用于相應(yīng)RDD上的各種操作。

4>Stage:階段,是作業(yè)的基本調(diào)度單位,一個(gè)作業(yè)會(huì)分為多組任務(wù),每組任務(wù)被稱為“階段”。

5>TaskScheduler:任務(wù)調(diào)度器

6>Task:任務(wù),運(yùn)行在Executor上的工作單元,是Executor中的一個(gè)線程。

5、Driver Program:驅(qū)動(dòng)程序
1>運(yùn)行應(yīng)用Application的 main() 方法并且創(chuàng)建了 SparkContext;

2>Driver 分為 main() 方法和 SparkContext兩部分。

6、DAG:是Directed Acyclic Graph(有向無環(huán)圖)
1>用于反映RDD之間的依賴關(guān)系。

2>工作內(nèi)容如圖:

最新-Spark基本工作原理

7、DAGScheduler:有向無環(huán)圖調(diào)度器

1>基于DAG劃分Stage,并以TaskSet的形勢(shì)提交Stage給TaskScheduler;

2>負(fù)責(zé)將作業(yè)拆分成不同階段的具有依賴關(guān)系的多批任務(wù);

3>計(jì)算作業(yè)和任務(wù)的依賴關(guān)系,制定調(diào)度邏輯。

4>在SparkContext初始化的過程中被實(shí)例化,一個(gè)SparkContext對(duì)應(yīng)創(chuàng)建一個(gè)DAGScheduler

5>工作內(nèi)容如圖:

最新-Spark基本工作原理

二、Spark服務(wù)是如何執(zhí)行任務(wù)的?

官方流程如圖:
最新-Spark基本工作原理

下面,我們對(duì)每一步做詳細(xì)說明:

1、客戶端提交作業(yè):spark-submit

2、創(chuàng)建應(yīng)用,運(yùn)行Application應(yīng)用程序的main函數(shù),創(chuàng)建SparkContext對(duì)象(準(zhǔn)備Spark應(yīng)用程序的運(yùn)行環(huán)境),并負(fù)責(zé)與Cluster Manager進(jìn)行交互。

3、通過SparkContext向Cluster manager(Master)注冊(cè),并申請(qǐng)需要運(yùn)行的Executor資源。

4、Cluster manager按資源分配策略進(jìn)行分配。

5、Cluster manager向分配好的Worker Node發(fā)送,啟動(dòng)Executor進(jìn)程指令。

6、Worker Node接收到指令后,啟動(dòng)Executor進(jìn)程。

7、Executor進(jìn)程發(fā)送心跳給Cluster manager。

8、Driver程序的SparkContext,構(gòu)建成DAG圖。

9、SparkContext進(jìn)一步,將DAG圖分解成Stage階段(即任務(wù)集TaskSet)。

10、SparkContext進(jìn)一步,將Stage階段(TaskSet)發(fā)送給任務(wù)調(diào)度器(TaskScheduler)。

11、Executor向TaskScheduler申請(qǐng)任務(wù)(Task)。

12、TaskScheduler將Task任務(wù)發(fā)放給Executor運(yùn)行,SparkContext同時(shí)將Application應(yīng)用代碼發(fā)放給Executor。

13、Executor運(yùn)行應(yīng)用代碼,Driver進(jìn)行執(zhí)行任務(wù)監(jiān)控。

14、Execurot運(yùn)行任務(wù)完畢后,向Driver發(fā)送任務(wù)完成信號(hào)。

15、Driver負(fù)責(zé)將SparkContext關(guān)閉,并向Cluster manager發(fā)送注銷信號(hào)。

15、Cluster manager收到Driver的注銷信號(hào)后,向Worker Node發(fā)送釋放資源信號(hào)。

16、Worker Node對(duì)應(yīng)的Executor程序停止運(yùn)行,資源釋放。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI