美文网首页
spark的Driver获得资源的过程(standalone模式

spark的Driver获得资源的过程(standalone模式

作者: 西门无忌 | 来源:发表于2016-11-22 09:02 被阅读0次

    1. 在SparkContext实例化的时候调用createTaskScheduler来创建TaskSchedulerImpl和SparkDeploySchedulerBackend

    2. 同时在SparkContext实例化的时候会调用TaskSchedulerImpl的start,在start方法中会调用SparkDeploySchedulerBackend的start,在该start方法中会创建AppClient对象并调用AppClient对象的start方法

    3. 在AppClient对象的start方法中会创建ClientEndpoint,在创建ClientEndpoint会传入Command来指定具体为当前应用程序启动的Executor进行的入口类的名称为CoarseGrainedExecutorBackend

    4. 然后ClientEndpoint启动并通过tryRegisterMaster来注册当前的应用

    5. 程序到Master中,Master接受到注册信息后如何可以运行程序,则会为该程序生产Job ID并通过schedule来分配计算资源,具体计算资源的分配是通过应用程序的运行方式、Memory、cores等配置信息来决定的

    6. 最后Master会发送指令给Worker,Worker中为当前应用程序分配计算资源时会首先分配ExecutorRunner,ExecutorRunner内部会通过Thread的方式构建ProcessBuilder来启动另外一个JVM进程,这个JVM进程启动时候加载的main方法所在的类的名称就是在创建ClientEndpoint时传入的Command来指定具体名称为CoarseGrainedExecutorBackend的类,

    7. 此时JVM在通过ProcessBuilder启动的时候获得了CoarseGrainedExecutorBackend后加载并调用其中的main方法,在main方法中会实例化CoarseGrainedExecutorBackend本身这个消息循环体。

    8. 而CoarseGrainedExecutorBackend在实例化的时候会通过回调onStart向DriverEndpoint发送RegisterExecutor来注册当前的CoarseGrainedExecutorBackend,此时DriverEndpoint收到到该注册信息并保存在了SparkDeploySchedulerBackend实例的内存数据结构中,这样Driver就获得了计算资源!

    相关文章

      网友评论

          本文标题:spark的Driver获得资源的过程(standalone模式

          本文链接:https://www.haomeiwen.com/subject/rcjppttx.html