spark節點通訊模型_ing

先定義4個節點:master worker executor driver, 通訊鏈路以下圖所示jvm

worker與master建立了通訊的路徑1,3d

driver分別建立了與master和executor通訊的endpoint,此爲路徑2和3blog

 

 

 

1、路徑1的具體執行類爲 兩個實現了RpcEndpoint接口的Master 和 Worker (具體是IsolatedRpcEndpoint)接口

2、路徑2的dirver端:接口 CoarseGrainedSchedulerBackend 負責與master通訊,若是是standalone模式,CoarseGrainedSchedulerBackend的具體實現是 StandaloneSchedulerBackend,it

可是CoarseGrainedSchedulerBackend並不具有通訊功能,它不是RpcEndpoint的實現類io

因此StandaloneSchedulerBackend內部實現了一個StandaloneAppClient實例, StandaloneAppClient經過內部類ClientEndPoint 與master通訊。ClientEndPoint 是RpcEndpoint的實現類因此能用來通訊ast

因而可知CoarseGrainedSchedulerBackend的功能並不僅僅用來通訊,還有其餘做用。cli

3、路徑3的實現爲DriverEndPoint 和 CoarseGrainedExecutorBackend,都是RpcEndpoint的實現類。date

 

以應用提交爲例,看每一個路徑具體發了什麼消息im

 

路徑0:這個路徑不在上面的描述中,這是客戶端提交應用給master的路徑,由於提交成功後就退出了,退出後這個路徑也就不存在了,是一次性的。

    客戶端會啓動一個jvm並構造一個ClientEndPoint(RpcEndPoint的實現類),

    ClientEndPoint向master發送消息 ①RequestSubmitDriver ③RequestDriverStatus   ----數字表明發送的前後順序

    master會向這個clientEndpoint 發送消息 ②SubmitDriverResponse

    而後ClientEndPoint 就退出了 

    

路徑一:Master與Worker的交互

Master向Worker發送的消息:

  • LaunchDriver 
  • LaunchExecutor
  • DriverStateChanged

Worker收到以上消息後會建立DriverRunner和ExecutorRunner 

Worker向Master發送的消息:

  • ExecutorStateChanged

路徑二:Master與Driver交互

ClientEndPoint(CoarseGrainedSchedulerBackend) 向Master發送消息:

  • RegisterApplication

Master向ClientEndPoint(CoarseGrainedSchedulerBackend) 發送消息:

  • RegisteredApplication
  • ExecutorAdded
  • ExecutorUpdated

路徑三:Driver與Executor交互

DriverEndPoint(由CoarseGrainedSchedulerBackend建立) 向CoarseGrainedExecutorBackend 發送消息

  • LaunchTask

CoarseGrainedExecutorBackend向DriverEndPoint發送消息

  • StatusUpdate
相關文章
相關標籤/搜索