Standalone模式:Cluster Manager為Spark原生的資源管理器,由Master節(jié)點(diǎn)負(fù)責(zé)資?..."/>
您好,登錄后才能下訂單哦!
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 上的程序
如圖:
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)容如圖:
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)容如圖:
官方流程如圖:
下面,我們對(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)行,資源釋放。
免責(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)容。