TaskScheduler
1、stage创建 taskSet 提交给--> taskScheduler --> 分配给 executor 执行
2、org.apache.spark.scheduler.TaskSchedulerImpl 的 submitTasks 是入口
3、每个taskSet 创建一个 TaskSetManager对象--负责taskSet的监视管理
4、taskSchedulerImpl 的 resourceOffer 执行任务分配算法 将各个task 分配到executor上去
4.1 将可用的 executor 随机打乱--目的是为了负载均衡
4.2 提交的taskSet放入到调度池 执行调度分配算法时 会从调度池取出 排好序的taskSet
4.3 本地化级别:
PROCESS_LOCAL 进程本地化----- RDD的 partition 和task 进入一个executor内
NODE_LOCAL 节点本地化----- RDD的 partition 和task 不在一个executor内 在同一个woker节点上
NO_PREF 无本地化
RACK_LOCAL 机架本地化
ANY 任意
尝试以最优的 本地化级别 启动 taskset
5、分配 task到 executor上之后 执行 launchTask() 方法
将分配的task发送launchTask消息到对应的executor上去 由executor启动并执行task
相关推荐
Spark 学习之路,包含 Spark Core,Spark SQL,Spark Streaming,Spark mllib 学习笔记 * [spark core学习笔记及代码 * [spark sql学习笔记及代码 * [spark streaming学习笔记及代码 Spark 消息通信 ### Spark ...
《Spark源码学习笔记》是针对大数据处理框架Spark进行深入研究的资料,主要涵盖了Spark的核心设计理念、架构原理以及源码解析。本笔记旨在帮助读者理解Spark如何高效地处理大规模数据,提升数据分析和处理的能力。 ...
- **任务调度**:Spark的任务调度分为DAG Scheduler和Task Scheduler两层。DAG Scheduler将高级操作转化为Stage,Task Scheduler则负责将任务分发到worker节点上。依赖关系分为宽依赖(宽依赖意味着一个task的输出...
- TaskScheduler如何将Task分配到Executor上执行。 - Shuffle过程是如何实现的,包括MapOutputTracker和BlockManager的角色。 - RDD(弹性分布式数据集)的创建、转换和行动操作的实现细节。 四、实战应用 1. 数据...
尚硅谷的Spark资料笔记代码提供了一个深入学习和理解Spark的宝贵资源库,涵盖理论知识、实践案例以及代码示例。 一、Spark核心概念 Spark的核心在于其弹性分布式数据集(Resilient Distributed Datasets,简称RDD)...
RDD的Action算子触发job的提交,提交到Spark的Job生成RDD DAG,由DAGScheduler转换为Stage DAG,每个Stage中产生相应的Task集合,TaskScheduler将任务分发到Executor执行。每个任务对应的数据块,使用用户定义的函数...
6. **Spark调度器**:Spark的调度器分为两层,即任务调度器(TaskScheduler)和集群调度器(ClusterManager)。任务调度器负责将任务分配到工作节点,而集群调度器负责资源分配和管理,如YARN和Mesos。 7. **故障...
- **Task**:任务是DAG中的基本单元,可以是一个具体的计算或数据处理操作。 - **Operator**:操作符是任务的实现,如SQL查询、文件传输等。Airflow内置了多种操作符,同时支持自定义操作符。 - **Scheduler**:...