1. 任务调度流程图
各个RDD之间存在着依赖关系,这些依赖关系就形成有向无环图DAG,DAGScheduler对这些依赖 关系形成的DAG进行Stage划分,划分的规则很简单,从后往前回溯,遇到窄依赖加入本stage,遇 见宽依赖进行Stage切分。完成了Stage的划分。DAGScheduler基于每个Stage生成TaskSet,并将 TaskSet提交给TaskScheduler。TaskScheduler 负责具体的task调度,最后在Worker节点上启动 task。
- 1-首先RDD计算任务是DAG有向无环图的形式
- 2-使用DAGScheduler负责将graph图切分为stage
- 3-DAGSCheduler会提交stages的taskset给taskScheduler执行
- 4-向CLusterManager申请资源启动task,这里ClusterManager在spark自身的standalone模式下就指的是master和worker,在yarn模式下指的是RM和NM,同时TaskScheduler会监控某些计算失败的算子重新拉取task执行计