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
相关文章
相关标签/搜索