Spark-任务调度与资源调度的整合

目录

调度流程

1.源码打成jar包,放到集群上

2.提交Application,客户端会生成一个Driver进程。

spark-submit --master --class jarPath

3.当TaskScheduler对象创建成功后,会向Master为Application申请资源

4.当Master中的waitingApps集合中的元素发生改变会调用schedule()

5.当Executor启动成功后,会向Task Scheduler反向注册,此时的Task Scheduler就有一批Executor的列表信息

6.Driver进程中的DAGScheduler会根据RDD的宽窄依赖,切割job,划分stage,每一个stage都是由一组task组成的,每一个task是一个pipeline的计算模式。

7.Driver进程中的TaskScheduler会根据数据的位置(通过调用HDFS的API,拿到数据的block块以及位置)来分发task

8.Driver进程中的TaskScheduler分发task并且监控task的执行情况

9.如果task失败或者挣扎,Driver进程中的TaskScheduler会重试

10.如果task失败次数达到规定次数后,Driver进程中的DAGScheduler会重试stage(只会重试失败的task)

11.任务完成,Driver进程会告诉Master将集群中的Executor kill掉,释放资源。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/love__guo/article/details/85200867