任务提交流程
image.png
分为四个阶段
阶段一
经过一系列的transformation,产生很多RDD,形成DAG
DAG:(有向无环图,有方向 无闭环)
数据是有流向的,不是闭环的阶段二
把DAG提交给 DAGScheduler(DAG调度器),
DAGScheduler 把DAG切分成一个个的 Stage。
然后把 TaskSet(Task的一个集合)提交给 TaskScheduler(任务调度器)。
根据窄依赖和宽依赖 来划分 stage,
每个 stage 可以分成多个 pipeLine。
不同流水线之间可以并行执行,提高效率.
有几个分区 就产生几个task。阶段三
把 TaskSet 提交给 TaskScheduler
任务调度器把任务交给 Executor。
Cluster Manager(Master)决定在哪些机器上启动 Executor,
Driver 提交Task 到 Worker 下的 Executor阶段四
Executor 创建很多 Threads,执行 Task。
把数据写入 HDFS,
Block manager 管理分区。
流程总结
Driver 在启动的时候 指定了要使用多少CPU、内存等资源,
启动时调用 main方法,在里面创建 sparkContext,和 Master 建立连接,
Master 根据任务需要多少资源,到集群里找到符合条件的 Worker,
Master 跟 Worker 进行 RPC 通信,告诉 Worker 启动 Executor。
Executor 启动之后 就和 Driver 建立起通信。
Driver 给Executor 下发任务,RDD -> DAG…