Spark Submit应用中提到了在standalone模式下,通过spark-submit提交集群中的应用程序的案例,这里就讲讲这个应用程序的注册到集群的过程。
这里须要引入两个角色,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-解决音讯