教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

RDD在Spark中是如何運(yùn)行的?

更新時(shí)間:2021年06月17日10時(shí)49分 來(lái)源:傳智教育 瀏覽次數(shù):

傳智教育-一樣的教育,不一樣的品質(zhì)

下面,通過(guò)一張圖來(lái)學(xué)習(xí)一下RDD在Spark中運(yùn)行流程,如圖1所示。

RDD在Spark中的運(yùn)行流程

圖1 RDD在Spark中的運(yùn)行流程


在圖1中,,Spark的任務(wù)調(diào)度流程分為RDD Objects、DAGScheduler、TaskScheduler以及Worker四個(gè)部分。關(guān)于這四個(gè)部分的相關(guān)介紹具體如下:

(1)RDD Objects:當(dāng)RDD對(duì)象創(chuàng)建后,SparkContext會(huì)根據(jù)RDD對(duì)象構(gòu)建DAG有向無(wú)環(huán)圖,然后將Task提交給DAGScheduler。

(2)DAGScheduler:將作業(yè)的DAG劃分成不同的Stage,每個(gè)Stage都是TaskSet任務(wù)集合,并以TaskSet為單位提交給TaskScheduler。

(3)TaskScheduler:通過(guò)TaskSetManager管理Task,并通過(guò)集群中的資源管理器(Standalone模式下是Master,Yarn模式下是ResourceManager)把Task發(fā)給集群中Worker的Executor。若期間有某個(gè)Task失敗,則TaskScheduler會(huì)重試;若TaskScheduler發(fā)現(xiàn)某個(gè)Task一直沒(méi)有運(yùn)行完成,則有可能在空閑的機(jī)器上啟動(dòng)同一個(gè)Task,哪個(gè)Task先完成就用哪個(gè)Task的結(jié)果。但是,無(wú)論Task是否成功,TaskScheduler都會(huì)向DAGScheduler匯報(bào)當(dāng)前的狀態(tài),若某個(gè)Stage運(yùn)行失敗,則TaskScheduler會(huì)通知DAGScheduler重新提交Task。需要注意的是,一個(gè)TaskScheduler只能服務(wù)一個(gè)SparkContext對(duì)象。Worker:Spark集群中的Worker接收到Task后,把Task運(yùn)行在Executor進(jìn)程中,這個(gè)Task就相當(dāng)于Executor中進(jìn)程中的一個(gè)線程。一個(gè)進(jìn)程中可以有多個(gè)線程在工作,從而可以處理多個(gè)數(shù)據(jù)分區(qū)(例如運(yùn)行任務(wù)、讀取或者存儲(chǔ)數(shù)據(jù))。









猜你喜歡:

RDD容錯(cuò)機(jī)制?RDD是如何恢復(fù)數(shù)據(jù)的?

怎樣使用Spark方法完成RDD的創(chuàng)建?

RDD為什么要進(jìn)行數(shù)據(jù)持久化?持久化操作步驟

spark筆記之RDD容錯(cuò)機(jī)制之checkpoint

傳智教育Python+大數(shù)據(jù)開(kāi)發(fā)培訓(xùn)

0 分享到:
和我們?cè)诰€交談!