国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > 服务器 > spark内核揭秘-12-AppClient注册Masters

spark内核揭秘-12-AppClient注册Masters

来源:程序员人生   发布时间:2015-02-04 09:18:29 阅读次数:2932次

注册Master有两种,1种是registerWithMaster方法,1种是tryRegisterAllMasters方法,前者是单Master的情况,后者是多Master,1般情况下是满足HA机制,我们看1下registerWithMaster方法:


此时会调用tryRegisterAllMasters方法:


此时通过Akka通过消息机制发送消息给Master来注册程序,RegisterApplication是1个case class,来封装消息:


我们进入Master的源代码:




看1下接受客户端发送过来消息RegisterApplication的代码以下所示:



此时首先使用ApplicationInfo构建1些准备信息,然后会致使registerApplication代码的调用:

1、createAppliction:


2、registerApplication:


代码中就是1个注册利用的进程。

3、sender ! RegisteredApplication(app.id, masterUrl)方法是回复给发送者消息:


3.1、上面代码中的changeMaster(masterUrl):


3.2、进入listener.connected(appId)方法:


3.2.1、进入实现类SparkDeploySchedulerBackend的connected方法:


进入notifyContext()方法:



4、接着在Master的消息响应中会调用schedule方法:






可以看到schedule方法中首先要启动Driver程序,也就是有main函数的程序,然后在schedule中会调度Worker的进程:

上面代码分析

1、进入launchDriver(worker, driver)方法:


1.1、进入worker.actor ! LaunchDriver(driver.id, driver.desc)方法:


1.1.1、进入 driver.start()方法:






2、进入 launchExecutor(worker, exec)方法:


PS:代码分析的好乱呀,我这个笨猪

生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生