zoukankan      html  css  js  c++  java
  • spark内核揭秘-12-AppClient注册Masters

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


    此时会调用tryRegisterAllMasters方法:


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


    我们进入Master的源代码:




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



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

    1、createAppliction:


    2、registerApplication:


    代码中就是一个注册应用的过程。

    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:代码分析的好乱呀,我这个笨猪

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Excel 常用函数
    Excel中使用VBA访问Access数据库
    Python 日期和时间戳的转换
    tensorflow中命名空间、变量命名的问题
    Git:一个简单示例
    Pyhon中运算符的使用
    python中模块包的离线下载教程
    python中的进制转换
    python几种常见的模块安装方法
    python中的模块调用
  • 原文地址:https://www.cnblogs.com/stark-summer/p/4829809.html
Copyright © 2011-2022 走看看