Worker和Master是Spark独立集群里用到的类。若是是yarn环境部署,是不须要这两个类的。app
Master是Spark独立集群的控制者,Worker是工做者,一个Spark独立集群须要启动一个Master和多个Worker。Spark提供了Master选举功能,保障Master挂掉的时候能选出另外一个Master,作一个切换的动做,这块原理和ZooKeeper相似,这里知道概念就能够了。spa
Master的功能一是管理Worker的注册和注销、状态变动等,维护集群的元数据;而是管理Driver的提交运行。继承
当spark程序运行driver时,会经过StandaloneScheduleBackend来调度分区任务的执行,这时候在StandaloneScheduleBackend里面会有一个StandaloneAppClient负责与Master通讯,发送RegisterApplication消息给Master,Master将等待运行的app信息记录下来,等待schedule方法的调度,RegisterApplication里包含了要执行的Driver的信息(Driver就是咱们的spark程序的main方法要作的事)。部署
Master在进度调度(schedule方法)的时候,而后选择一个Worker做为Driver的执行者,这时会发送LaunchDriver消息给Worker,Worker收到后在本地启动Driver。spark
Master和Worker是机器层面的概念,和Executor、Driver是两码事,这点要注意的。ScheduleBackend是处理Driver和Executor之间的消息通讯的。io
CoarseGrainedSchedulerBackend是Driver的SchedulerBackend,是公共部分。独立集群的StandaloneSchedulerBackend其实就是继承了CoarseGrainedSchedulerBackend,共用了与Executor交互的公共代码,好比LaunchTask消息的处理等。ast
在Executor上运行的是CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend负责接收Driver发送的消息,回复Driver等。集群
CoarseGrainedSchedulerBackend发送LaunchTask消息给Executor的CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend收到LaunchTask后调用Executor的launchTask方法来执行Task。原理