Spark资源调度与任务调度

Spark资源任务调度

一.资源调度

1. 集群起来后,Worker向Master汇报资源

2. 客户端提交application,启动Driver,创建DAGschedulerDAG调度器和TaskScheduler任务调度器;

3.TaskScheduler任务调度器向Master申请资源;

4.Master找到满足资源的Worker节点启动Executor,

5.Executer反向注册给Driver,此时Driver掌握了一批计算资源;

二.任务调度

6.Action算子触发任务的调度;

7.DAGschedulerDAG调度器,将job中的RDD根据宽窄依赖,划分为stage,以taskSet发送给TaskScheduler;

8.TaskScheduler遍历Taskset,将Task发送到Executor的Threadpool中执行;

9.Driver监控task执行,回收结果;

粗粒度资源申请:(Spark)

application申请资源时,要把所需资源一下子申请过来,失败的话,等知道申请到所有所需资源时才会执行application,直到最后一个task执行完.释放所有的资源;

优点:application执行过程中不需要反复申请资源,执行快;

缺点:资源得不到充分利用;

细粒度资源申请:(MapReduce)

applicaton执行之前不会将所有的资源申请完毕,每个job独立申请资源,job中的task执行完毕后,立即释放资源;

优点:资源充分利用;

缺点:application执行慢;

你可能感兴趣的:(Spark资源调度与任务调度)