Spark Submit使用中提到了在standalone模式下,通过spark-submit提交集群中的应用程序的案例,这里就讲讲这个应用程序的注册到集群的过程(默认client部署模式)。
这里需要引入两个角色,Driver和Executor。
Driver是客户端驱动程序,用于将任务程序转换为RDD和DAG,并与Cluster Manager进行通信与调度。本章主要是与Cluster Manager进行通信与调度。
Executor:执行计算任务的一些进程。主要负责任务的执行以及与Worker、Driver Application的信息同步。
流程
Application启动的时候,会创建一个和集群管理器进行对话的客户端,叫做StandaloneAppClient,这个StandaloneAppClient里存放了很多信息,比如Master地址信息,当前Application的名称、需要的最大CPU核心数、每个Executor需要的内存等信息。
因为需要和集群管理器进行通信,所以StandaloneAppClient还有一个组件,叫做ClientEndpoint。
当Application启动的时候,ClientEndpoint组件就开始尝试向Master进行注册,并提供自己Application的相关信息,这样Master就能将Worker上的资源及Executor分配给Driver。
Master接收到注册信息,就会把Application的信息存在内存中,同时把这个Application放入到等待调度的队列里,等到资源进行调度。
Master处理完后,就会发信息给ClientEndpoint,告知已经注册成功,ClientEndpoint收到Master信息后,就标记自己已经注册成功。
除了ClientEndpoint用来和集群管理器进行对话,Application还定义了另外一个组件DriverEndpoint,用来和其他组件通信进行通信,比如Task状态更新、注册Executor等,这些留着后文来讲。
源码思维导图
StandaloneSchedulerBackend
ClientEndpoint消息处理
DriverEndpoint消息处理
master-处理消息
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。