接受Worker的注册
Worker
在启动的时候会主动向Master
进行注册,这样在运行环境中就会实时增加节点,这样就不需要重启Spark
集群。在Worker
启动的以后,会调用Worker
对象中的onStart
方法,在这个方法中会调用registerWithMaster
方法,来向Master进行注册
Master
接收到Worker
的注册请求以后, 调用receiveAndReply
方法,注册成功以后,通过持久化方法persistanceEngine
方法将信息持久化到文件中或者Zookeeper
中。然后在将注册结果返回给Master
在
receiveAndReply
方法中调用registerWorker
方法来注册Worker
信息,该方法中Master
将过滤后的Worker
信息加入到主机的缓存中
- 调用
schedule
方法,开始资源调度。 Worker
接收到Master
返回来的信息调用handlerRegisterResponse方法进行结果的处理
接受Driver的注册
- 当我们利用
spark-submit
提交作业的时候,这时候会初始化SparkSubmit
这个类,并执行Main
函数,Main
函数中会对命令进行解析,然后根据模式匹配来确定是submit、kill
还是requestStatus
请求。以submit为例,当匹配模式匹配为submit
时,就会调用submit
函数,在submit
函数中继续调用prepareSubmitEnvironment
函数来准备提交环境。然后初始化org.apache.spark.deploy.Client
这类, 在client
类的文件里还有一个ClientEndpoint
这个私有类,Client
初始化后会调用ClientEndpoint
的onstart
方法,根据匹配模式来确定是launch
还是kill
,如果是launch
,那么Client
就会想Master调用ayncSendToMasterAndForwardReply
方法,发送RequestSubmitDriver
消息。如果是kill
,那么Client
就会调用ayncSendToMasterAndForwardReply
方法,发送RequestKillDriver
消息
Master
接收到Driver
的注册请求以后,调用receiveAndReply
方法,然后进行模式匹配,匹配到的是RequestSubmitDriver
,那么就开始注册Driver
。
- 当我们利用
接受Application的注册
在上一章节中,我们提到了创建
TaskScheduler
的时候需要创建TaskSchedulerImpl
,然后它会调用start
方法,在这start
方法中会调用SparkDeploySchedulerBackend
的start方法,在这个方法中就有一个创建AppClient
的代码,当创建AppClient
的时候,会执行它内部的onStart
方法,这个方法中又会调用registerWithMaster
方法,registerWithMaster
方法又会调用tryRegisterAllMasters
方法,向所有Master
进行注册,因为只有一个活跃的Master
,所以只能注册到一个Master
中。当注册成功以后,将成功信息返回给Client
Master
接收到Application
的注册请求以后,在receive方法中模式匹配到了registerApplication
对象,然后进行Application
的注册。
Spark Core(十)Spark Master的注册机制
最新推荐文章于 2021-12-13 22:10:13 发布