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的抽象方法。
3.执行任务时task任务分为两种,shuffleMapTask和resultTask。