Spark基于资源调度和任务调度;粗粒度资源申请和细粒度资源申请(详细版:图解+文字说明)

Spark任务调度和资源调度
        1).资源调度
            a).集群启动,Worker向Master汇报资源,Master掌握了集群资源情况
            b).当在客户端提交任务的时候,运行任务,new SparkContext,会创建两个对象:DAGScheduler和TaskScheduler
            c).TaskScheduler向Master申请资源,用于启动executor
            d).Master找到满足资源的节点启动Executor
            e).Executor启动之后,反向注册给Driver,Driver掌握了集群计算资源
        2).任务调度
            a).当application运行到Action算子时,触发job,开始任务调度
            b).每个job中有一系列RDD的依赖关系,形成一个DAG有向无环图。
            c).DAG有向无环图被DAGScheduler按照RDD之间的宽窄依赖关系切割job划分stage
            d).DAGScheduler将stage以taskSet的形式提交给TaskScheduler
            e).TaskScheduler遍历set,拿到一个个task,发送到Executor中ThreadPool执行
            f).TaskScheduler监控task回收结果
            
        注意:
            a).TaskScheduler发送task会失败,重试3次,如果依然失败,由DAGScheduler重试stage,重试4次,如果依然失败,stage所在的job就失败了,job失败,application就失败了。
            b).TaskScheduler不仅可以重试失败的task,还可以重试执行缓慢的task,这就是Spark推测执行机制,默认关闭的,对于ETL的业务一定关闭推测执行。对于数据一直执行不完,首先看有没有数据倾斜,是否开启了推测执行。
     

Spark基于资源调度和任务调度;粗粒度资源申请和细粒度资源申请(详细版:图解+文字说明)

粗粒度资源申请和细粒度资源申请
粗粒度资源申请:
            任务执行之前,先将所有的资源申请到,task执行的时候不需要自己申请资源,加快了执行速度。如果多数task执行完成,只有一个task没有执行完,那么这批申请到的资源不会被释放,只有所有的task执行完成之后才会释放所有资源。会有集群资源不能充分利用的情况。
细粒度资源申请:
            任务执行之前,不会申请所有的资源,task执行时,自己申请资源,自己释放资源,任务执行就慢了,但是集群资源可以充分利用
 

鼓励一下我呗,谢谢你。

Spark基于资源调度和任务调度;粗粒度资源申请和细粒度资源申请(详细版:图解+文字说明)

Spark资源调度:

1.启动集群,worker向master汇报资源,master掌握了集群资源

2.提交application时,会创建Driver,当new SparkContext时,会创建两个对象DAGScheduler和TaskScheduler

3.TaskScheduler向master申请资源

4.MAster找到满足资源的worker,启动executor

5.executor启动之后,反向注册给TaskScheduler

Spark的任务调度:

6.当代码中有action算子触发一个job,job中的RDD依赖关系形成一个DAG

7.DAG提交给DAGscheduler,DAGscheduler按照RDD之间的宽窄依赖关系切割job,划分stage,将stage封装到taskset提交到taskScheduler

8.taskscheduler收到taskset,遍历taskset拿到一个个的task,发送的到executor中的threadpool执行

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

总结:

1.Taskscheduler可以重试失败的task,重试3次,如果3次之后,依然没有task执行,那么就会由DAGscheduler重试task所在的stage,重试4次,如果还没有成功执行,那么stage所在的job就失败了,job失败,application就失败了。

2.taskScheduler还可以重试执行缓慢的task,就是spark的推测执行机制,默认是关闭的,对于ETL有入库行为的业务,要关闭推测机制

3.遇到数据一直执行不完,1)是否有数据倾斜;2)是否开启了推测执行机制