Spark任务调度
Spark的任务调度分为四步
1RDD objects
RDD的准备阶段,组织RDD及RDD的依赖关系生成大概的RDD的DAG图,DAG图是有向环图。
2DAG scheduler
细分RDD中partition的依赖关系确定那些是宽依赖那些是窄依赖,生成更详细的DAG图,将DAG图封装成 TaskSet任务集合当触发计算时(执行action型算子)将其提交给集群。
3TaskScheduler
接收TaskSet任务集,分析确定那个task对应那个worker并将其发送给worker执行。
4worker执行阶段
接收task任务,通过spark的block管理器blockManager从集群节点上获取对应的block上的数据,启动executor完成计算。
Task执行过程
1.执行action型算子时将task发给对应的worker然后worker启动executor执行计算。
2.executor获取运行环境调用task类的run方法执行计算。
Task类是一个抽象类,类中的run方法调用了一个runTask的抽象方法。

本文详细介绍了Spark的任务调度过程,包括RDD对象的准备、DAG调度、TaskScheduler分配和Worker执行。同时,深入探讨了Task的执行过程,包括shuffleMapTask和resultTask的区别。此外,还讲解了Spark的缓存策略,如MEMORY_ONLY和checkpoint检查点的使用,以及它们在数据持久化中的作用。
3388

被折叠的 条评论
为什么被折叠?



