白话Spark——DAGScheduler,TaskScheduler,SchedulerBackend模块实现机制

本文深入浅出地解析了Spark中的DAGScheduler、TaskScheduler和SchedulerBackend的工作机制。DAGScheduler负责分析用户应用,将DAG划分为可并行执行的stage,然后提交给TaskScheduler。TaskScheduler根据不同的资源管理策略进行任务调度,与SchedulerBackend协作完成资源分配。文中详细阐述了stage划分、任务提交过程及调度策略,包括FIFO和FAIR,并讨论了容错机制。

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

用最简单的话说明白一件复杂的事情也是一种成就。

这里写图片描述
Scheduler任务调度器模块作为Spark的核心部件,涉及三个重要的类
1. org.apache.spark.scheduler.DAGScheduler
2. org.apache.spark.scheduler.SchedulerBackend
3. org.apache.spark.scheduler.TaskScheduler
本文用最直白的语言说一说自己对DAGScheduler的理解。
DAGSheduler主要负责分析用户提交的应用,并将DAG进行阶段划分,每个阶段stage包括可以并行执行的多个task,这些task的执行逻辑完全相同,只是应用在不同的数据,最后将这些task提交给taskscheduler。下面分别简述这个过程的几个步骤:

1.DAGScheduler的建立

用户提交编写的sparkcontext时就创建了DAGScheduler和TaskScheduler。

2.job提交

job产生发生在RDD执行动作时,这个动作运行方法runjob,来监听job的运行情况。DAGSheduler通过内部的方法submitJob来提交,但此时的提交只是job最终提交的一小步。此时提交job并生成jobid,将job放入队列中,由DAGSheduler中的方法来依次处理。最后的提交是送给了DAGScheduler.handleJobSubmitted,这个方法会进行处理job并进行阶段划分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值