Spark 任务调度之Launch Executor

本文深入解析Spark中Master节点的任务调度过程,重点介绍如何通过schedule()方法实现资源分配,包括核心概念schedulewaitingApps与launchExecutor的具体操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概要

本篇博客是Spark 任务调度概述详细流程中的第四部分,介绍Master Launch Executor的过程。

Schedule waitingApps

这里写图片描述
上图在Spark 任务调度之Submit Driver中介绍过,如上图最后一处注释,我们介绍了schedule()方法中launchDriver的流程,即Spark 任务调度之Launch Driver,这篇继续介绍schedule()方法另一个部分,Launch Executor,schedule()方法如下
这里写图片描述
上图中大部分代码是launchDriver,已经介绍了,如上图最后一行注释处,查看startExecutorsOnWorkers方法
这里写图片描述
如上图注释,waitingApps信息主要是我们通过命令行传入的core和memory信息,startExecutorsOnWorkers方法的职责是调度waitingApps,即将core和memory分配到具体的Worker,Spark 任务调度之Register App介绍了Driver注册app的流程。
scheduleExecutorsOnWorkers方法中,可以使用spreadOutApps算法分配资源,即Executor分布在尽可能多的Worker节点上,相反,也支持Executor聚集在某些Worker节点上,通过参数spark.deploy.spreadOut配置,默认为true,如下
这里写图片描述

Launch Executor

startExecutorsOnWorkers方法中,最后调用allocateWorkerResourceToExecutors方法,如下
这里写图片描述
上图最后处调用launchExecutor方法,如下
这里写图片描述
如上图注释,给Worker节点发送LaunchExecutor消息,Worker节点收到消息,Launch Executor部分就结束了,下一部分具体讲Executor在Worker节点的启动,最后,Worker接收LaunchExecutor消息对应代码如下
这里写图片描述

总结

介绍Master节点Launch Executor的过程,分两步

  1. schedule waitingApps
  2. launch Executor

流程如下
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值