Spark中资源调度和任务调度

Spark比MR快的原因 1、Spark基于内存的计算
2、粗粒度资源调度
3、DAG有向无环图:可以根据宽窄依赖划分出可以并行计算的task
细粒度资源调度 MR是属于细粒度资源调度
优点:每个task运行的时候单独申请资源,资源被充分利用
缺点:task启动速度慢
粗粒度资源调度 【Spark中资源调度和任务调度】Spark是属于粗粒度资源调度
优点:一次性将所有需要的资源都申请下来,task后续启动就不需要额外申请资源,启动速度非常快
缺点:会造成资源的浪费,因为只有当最后一个task运行完以后资源才会被释放
资源申请 1、使用spark-sumbit提交任务
2、在提交任务的节点启动Driver程序:Drive主要负责任务调度
3、Driver程序会向RM申请资源启动AM
4、RM会随机分配一台NM启动AM
5、AM又会向RM申请资源启动一批Executor
6、RM会分配资源在NM中启动Executor
7、Executor启动后会反向注册给Drive端
资源调度 1、当遇到一个action算子的时候,开始触发一个job进行任务调度
2、根据代码,构建DAG有向无环图
3、DAGScheduler会根据宽窄依赖切分Stage:Stage:是一组可以并行计算的Task
4、会将每个Stage以TaskSet的形式发送个TaskScheduler
5、TaskScheduler会将Task依次发送到Executor中执行
Task的重试机制
1、Task如果失败了,会由TaskScheduler重试3次
2、如果还是失败了,会由DAGScheduler将Stage重试4次
3、如果出现Shuffle file not found,DAGScheduler会去将上游的Stage进行重试
推测执行
当某个task执行太慢的时候,TaskSchedule会发送一个一模一样的task去执行,最终结果谁先执行完就以谁为准
Spark中资源调度和任务调度
文章图片

    推荐阅读