五、standalone運行模式


在上文中我們知道spark的集群主要有三種運行模式standalone、yarn、mesos,其中常被使用的是standalone和yarn,本文了解一下什么是standalone運行模式,它的運行流程是怎么樣的。

簡介

standalone模式,是spark自己實現的,它是一個資源調度框架。這里我們要關注這個框架的三個節點:

1)client

2)master

3)worker

spark應用程序有一個Driver驅動,Driver可以運行在Client上也可以運行在master上。如果你使用spark-shell去提交job的話它會是運行在master上的,如果你使用spark-submit或者IDEA開發工具方式運行,那么它是運行在Client上的。這樣我們知道了,Client的主體作用就是運行Driver。而master除了資源調度的作用還可以運行Driver。

再關注master和worker節點,standalone是一個主從模式,master節點負責資源管理,worker節點負責任務的執行。

運行流程

了解standalone主要節點之后,我們看一下它的運行流程,如圖:

1)當spark集群啟動以后,worker節點會有一個心跳機制和master保持通信;

2)SparkContext連接到master以后會向master申請資源,而master會根據worker心跳來分配worker的資源,並啟動worker的executor進程

3)SparkContext將程序代碼解析成dag結構,並提交給DagScheduler;

4)dag會在DagScheduler中分解成很多stage,每個stage包含着多個task

5)stage會被提交給TaskScheduler,而TaskScheduler會將task分配到worker,提交給executor進程,executor進程會創建線程池去執行task,並且向SparkContext報告執行情況,直到task完成;

6)所有task完成以后,SparkContext向Master注銷並釋放資源

總結

standalone的是spark默認的運行模式,它的運行流程主要就是把程序代碼解析成dag結構,並再細分到各個task提交給executor線程池去並行計算

在運行流程中我們並沒有提到job這個概念,只是說dag結構會被分解成很多的stage。其實,分解過程中如果遇到action操作(這不暫時不關注action操作是什么),那么就會生成一個job,而每一個job都包含着一個或者多個stage,所以job和stage也是一個總分的邏輯關系。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM