Spark Client啟動原理探索
阿新 • • 發佈:2018-01-20
backend dsc .com png down end 程序 ren and
經過幾天閑暇時間的學習,終於又理解的深入了一些,關於Spark Client如何提交作業也更清晰了點。
在整體的流程圖上是這樣的:
大體的思路就是應用程序通過SparkSubmit提交程序後,自動在當前的JVM中啟動Driver,然後與Master通信創建Excutor執行相應的任務。
自己整理了下流程圖
以及的組件圖:
可以看到大概是下面的步驟:
- 新建SparkContext
創建對應的scheduler和schedulerBackend
val (sched, ts) = SparkContext.createTaskScheduler(this, master, deployMode) _schedulerBackend = sched _taskScheduler = ts ... _taskScheduler.start()
- 啟動scheduler的start方法,內部調用backend的start方法
backend調用父類
CoarseGrainedSchedulerBackend
的start方法override def start() { super.start() ... client = new StandaloneAppClient(sc.env.rpcEnv, masters, appDesc, this, conf) client.start() }
- 創建對應的drvierEndpoint
- 在backend的start()方法裏面創建StandaloneAppClient
執行StanaloneAppClient對象的start方法,內部創建ClientEndpoint
DriverEndpoint和ClientEndpoint都會跟Master進行通信,接下來的處理就是編譯驅動程序的代碼,發送給excutor進行相應的處理。
Spark Client啟動原理探索