Spark 任务调度之Register App

概要

本篇博客是Spark 任务调度概述详细流程中的第三部分,上一篇Spark 任务调度之Launch Driver最后讲到了Worker进程使用java.lang.ProcessBuilder执行java -cp命令启动用户编写的程序。执行用户程序的main方法,初始化SparkContext,SparkContext初始化过程中其中主要涉及到三个对象,AppClientSparkDeploySchedulerBackendTaskScheduler,这三个对象完成了本篇的Register APP过程,以及后续讲到的和Executor的交互,主要为提交task和接收Executor返回的计算结果。

SchedulerBackend

SparkDeploySchedulerBackend是SchedulerBackend的实现类,作用于Driver内,维护了和Executor的通信,配合TaskScheduler提交任务到Executor,以及接收Executor的计算结果。SchedulerBackend有几个实现类,分别针对不同的资源管理器,如下

上图中各组件作用如下

  1. ExecutorAllocationClient: 负责向资源管理器申请Executor。
  2. DriverEndpoint: 底层提交task到Executor,接收Executor返回的计算结果。
  3. CoarseGrainedSchedulerBackend: 粗粒度的SchedulerBackend实现,使用集合executorDataMap维护和Executor通信的RpcEndpointRef,主要实现有SparkDeploySchedulerBackend、YarnSchedulerBackend、SimrSchedulerBackend。
  4. SparkDeploySchedulerBackend: 用于和Standalone资源管理器及Executor通信,其他实现YarnSchedulerBackendMesosSchedulerBackend等分别对应Yarn和Mesos。

TaskScheduler

TaskScheduler的主要作用是,将DAGScheduler生成的task,使用SchedulerBackend和DriverEndpoint发送给Executor,跟这篇文章相关的是,Register App的行为始于其实现类TaskSchedulerImpl的start方法,UML如下

Register App

什么是Register App

打开Standalone模式下的管理页面,会看到如下信息

上图中Running ApplicationsCompleted Applications分别是正在运行的程序和已完成程序,所以,Register App流程是指,Driver运行时,将上图所示的信息注册到Master的过程。

流程

Spark 任务调度之Launch Driver最后讲到了使用java -cp命令启动用户编写的程序,我们使用的例子是SparkPi,如下

Register App行为始于上图中的SparkContext初始化,可以参考SparkContext初始化过程,在其初始化时,会创建SparkDeploySchedulerBackendTaskScheduler对象,并调用TaskScheduler的start方法正式开始Register App的流程,如下

接下来调用SparkDeploySchedulerBackend的start方法,其start方法调用父类CoarseGrainedSchedulerBackend的start方法,父类的start方法中注册DriverEndpoint到RpcEnv,DriverEndpoint用于提交task到Executor,接收Executor返回的计算结果。
此外,SparkDeploySchedulerBackend的start方法会初始化AppClient,并执行其start方法,start方法中注册ClientEndpoint,ClientEndpoint的生命周期方法onStart中会和Master通信,注册APP,如下图注释

看下Master端对APP的注册

最后,完整流程如下

主要步骤如下

  1. 如上图①,Driver端注册DriverEndpoint到RpcEnv的流程,之后DriverEndpoint用于和Executor通信,包括send task和接收返回的计算结果。
  2. 如上图②,Driver向Master注册APP的流程。

总结

接着Spark 任务调度之Launch Driver,继续介绍Driver启动过程中,当SparkContext初始化时,Driver端注册DriverEndpoint到RpcEnv及Driver向Master注册APP信息的流程。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值