日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spark 执行流程及各组件执行

發布時間:2025/6/17 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark 执行流程及各组件执行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

Spark初始化:

1.Spark的啟動流程

?sbin/start-all.sh -> sbin/start-master.sh -> sbin/start-slaves.sh(ssh)

?MasterWorker主類啟動,這兩個主類都包含main方法

2.啟動Master都完成了哪些工作呢?

?1.解析參數

?2.創建ActorSystem,然后通過ActorSystem創建ActorMaster extends Actor

?3.調用MasterpreStart(),啟動了一個定時器,定期檢查超時的Worker

?

3.啟動Worker都完成了哪些工作呢?

?1.解析參數

?2.創建ActorSystem,然后通過ActorSystem創建ActorWorker extends Actor

?3.調用WorkerpreStart(),通過Master的連接URL,跟Master建立連接,發送注冊消息

?Master接收Worker的注冊請求,然后將注冊消息保存起來,向Worker發送一個注冊成功的消息

?WorkerWorker接收的這個消息后,啟動一個定時器,定期向Master發送心跳

?Master接收到Worker發送來的心跳信息后,更新Worker的上一次心跳時間

?

----------------------------------------------------------------------------

4.內部構建實例

?先創建一個SparkContext實例,在SparkContext的主構造器中完成了的重要步驟

??1.創建一個SparkEnv

???1.1創建ActorSystemAkkaUtils創建的)

???1.2創建ShuffleManager

???1.3創建BlockManager

??2.先創建的TaskScheduler

???2.1跟據Master的連接URL--master spark://node-1.xiaoniu.com:7077

???TaskSchedulerImpl,又創建了一個SparkDeploySchedulerBackend

??3.創建DAGScheduler

??4.啟動TaskScheduler

???TaskSchedulerImpl.start()方法,在該方法中,SchedulerBackendStart方法,

???在調用父類的start方法中,創建一個DriverActor(負責跟Executors通信的)

???SparkDeploySchedulerBackend準備了一堆參數(任務需要的資源,一下java參數,Executor的實現類)將這些參數封裝到ApplicationDescription,然后創建ClientActor(跟Master通信的)

??5.ClientActorpreStart方法中,跟Master建立連接,向Master提交任務(將任務的描述信息通過case class發送給Master

??6.Master接收到ClientActor的任務描述后,將任務描述信息保存起來,然后給ClientActor返回一下消息,告訴ClientActor任務注冊成功。接下來,Master調用了schedule方法,進行資源調度。有兩種調度方式

??(一種的打散,一種是盡量集中)

??7.MasterWorker通信,然后讓Worker啟動Executor(將Excutor需要的資源,任務描述信息,還有一堆參數發送給了Worker

??8.WorkerMaster發送來的信息,啟動ExecutorExecutor的實現類是ClientActor準備的,先發給MasterMaster再發給Worker

??9.Executor中有一個Main方法,先創建ActorSystem,然后創建Actor,在ActorpreStart方法中跟DriverActor進行通信。

Spark各組件執行時機:

1.SparkContext哪一端生成的?

? ? Drvier?

2.DAG是在哪一端被構建的?

????Driver

3.RDD是在哪一端生成的? RDD的分區是在哪一端:

Driver

4.廣播變量是在哪一端調用的方法進行廣播的?

?Driver

5.要廣播的數據應該在哪一端先創建好再廣播呢?

Driver

6.調用RDD的算子(TransformationAction)是在哪一端調用的

Driver

7.RDD在調用TransformationAction時需要傳入一下函數,函數是在哪一端聲明和傳入的?

Driver

8.RDD在調用TransformationAction時需要傳入函數,請問傳入的函數是在哪一端執行了函數的業務邏輯?

Executor端,Executor中的Task執行的函數的業務邏輯,Executor是一個Java進程,并且Executor中有一個線程池,Task有一個包裝類一個實現了Runnable接口的實例,將Task的包裝類丟到線程池中,Task包裝類的run方法會被調用,然后執行Task中的業務邏輯

9.自定義的分區器這個類是在哪一端實例化的?

Driver

10.分區器中的getParitition方法在哪一端調用的呢?

Executor中的Task中被執行?

11.Task是在哪一端生成的呢?

Driver端生成的Task,然后Task序列化,通過網絡發送給ExecutorExecutor接收后,將Task反序列化,,然后用一個實現了Runnable接口的實現類包裝,在丟進線程池執行

12.DAG是在哪一端構建好的并被切分成一到多個State

Driver

13.DAG是哪個類完成的切分Stage的功能?

DAGScheduler

14.DAGScheduler將切分好的Stage以什么樣的形式給TaskScheduler

TaskSet,里面裝了多個Task,在一個Stage中,Task是業務邏輯相同,但是處理的數據不相同的實例

?

轉載于:https://www.cnblogs.com/lsbigdata/p/10091786.html

總結

以上是生活随笔為你收集整理的spark 执行流程及各组件执行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。