Worker和Master

好久不见. 提交于 2019-11-30 13:29:05

Worker和Master是Spark独立集群里用到的类。如果是yarn环境部署,是不需要这两个类的。

Master是Spark独立集群的控制者,Worker是工作者,一个Spark独立集群需要启动一个Master和多个Worker。Spark提供了Master选举功能,保障Master挂掉的时候能选出另一个Master,做一个切换的动作,这块原理和ZooKeeper类似,这里知道概念就可以了。

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。

Master和Worker是机器层面的概念,和Executor、Driver是两码事,这点要注意的。ScheduleBackend是处理Driver和Executor之间的消息通信的。

CoarseGrainedSchedulerBackend是Driver的SchedulerBackend,是公共部分。独立集群的StandaloneSchedulerBackend其实就是继承了CoarseGrainedSchedulerBackend,共用了与Executor交互的公共代码,比如LaunchTask消息的处理等。

在Executor上运行的是CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend负责接收Driver发送的消息,回复Driver等。

CoarseGrainedSchedulerBackend发送LaunchTask消息给Executor的CoarseGrainedExecutorBackend,CoarseGrainedExecutorBackend收到LaunchTask后调用Executor的launchTask方法来执行Task。

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!