Spark资源调度机制流程


1、SparkContext实例化,调用createTaskScheduler来创建TaskSchedulerImpl和SparkDeploySchedulerBackend;

2、在SparkContext实例化的时候,调用TaskSchedulerImpl的start,在该start方法中调用SparkDeploySchedulerBackend的start方法;

3、在SparkDeploySchedulerBackend的start方法中创建AppClient对象并调用AppClient对象的start方法,在该start方法中会创建ClientEndpoint;

4、在创建的ClientEndpoint中传入Command来指定具体为当前应用程序启动的Executor进程的入口类的名称CoarseGrainedExecutorBackend;

5、ClientEndpoint启动并通过tryRegisterAllMaster来向Master注册当前应用程序;

6、Master接收到注册信息,判断是否可以运行该App。如果可以运行,则会为该程序生成Job ID,通过schedule来分配计算资源(具体计算资源的分配是通过应用程序的运行方式,Memory、cores等配置信息来决定的),然后Master发送指令给Worker,

7、Worker中为当前应用程序分配计算资源时会首先分配ExecutorRunner

8、ExecutorRunner内部通过Thread的方式构建ProcessBuilder来启动一个JVM进程,这个JVM进程启动时加载的main方法所在的类的名称(就是在创建ClientEndpoint时传入的Command来指定具体名称为CoarseGrainedExecutorBackend的类);

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

10、CoarseGrainedExecutorBackend通过回调onStart向DriverEndpoint发送RegisterExecutor来注册当前的CoarseGrainedExecutorBackend;

11、DriverEndpoint收到注册信息(RegisterExecutor)并保持在了SparkDeploySchedulerBackend实例的内存数据结构中,由此,Driver获得了计算资源。到此,资源调试结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值