一.资源调度
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执行慢;
网友评论