spark资源调度和任务调度流程

在这里插入图片描述

  1. Spark 资源调度和任务调度的流程:
    启动集群后,Worker 节点会向 Master 节点汇报资源情况,Master 掌握了集群资源
    情况。当 Spark 提交一个 Application 后,根据 RDD 之间的依赖关系将 Application 形
    成 一 个 DAG 有 向 无 环 图 。 任 务 提 交 后 , Spark 会 在 Driver 端 创 建 两 个 对 象 :
    DAGScheduler 和 TaskScheduler,DAGScheduler 是任务调度的高层调度器,是一个对
    象。DAGScheduler 的主要作用就是将 DAG 根据 RDD 之间的宽窄依赖关系划分为一个个
    的 Stage,然后将这些 Stage 以 TaskSet 的形式提交给 TaskScheduler(TaskScheduler
    是任务调度的低层调度器,这里 TaskSet 其实就是一个集合,里面封装的就是一个个的
    task 任务,也就是 stage 中的并行度 task 任务),TaskSchedule 会遍历 TaskSet 集合,拿
    到每个 task 后会将 task 发送到计算节点 Executor 中去执行(其实就是发送到 Executor
    中 的 线 程 池 ThreadPool 去 执 行 )。 task 在 Executor 线 程 池 中 的 运 行 情 况 会 向
    TaskScheduler 反馈,当 task 执行失败时,则由 TaskScheduler 负责重试,将 task 重新
    发送给 Executor 去执行,默认重试 3 次。如果重试 3 次依然失败,那么这个 task 所在的stage 就失败了。stage 失败了则由 DAGScheduler 来负责重试,重新发送 TaskSet 到
    TaskSchdeuler,Stage 默认重试 4 次。如果重试 4 次以后依然失败,那么这个 job 就失
    败了。job 失败了,Application 就失败了。
    TaskScheduler 不仅能重试失败的 task,还会重试 straggling(落后,缓慢)task(也
    就是执行速度比其他 task 慢太多的 task)。如果有运行缓慢的 task 那么 TaskScheduler
    会启动一个新的 task 来与这个运行缓慢的 task 执行相同的处理逻辑。两个 task 哪个先执
    行完,就以哪个 task 的执行结果为准。这就是 Spark 的推测执行机制。在 Spark 中推测
    执行默认是关闭的。推测执行可以通过 spark.speculation 属性来配置。
    注意:
    a) 对于 ETL 类型要入数据库的业务要关闭推测执行机制,这样就不会有重复的数
    据入库。
    b) 如果遇到数据倾斜的情况,开启推测执行则有可能导致一直会有 task 重新启
    动处理相同的逻辑,任务可能一直处于处理不完的状态。

  2. 粗粒度资源申请和细粒度资源申请
     粗粒度资源申请(Spark)
    在 Application 执行之前,将所有的资源申请完毕,当资源申请成功后,才会进行任
    务的调度,当所有的 task 执行完成后,才会释放这部分资源。
    优点:在 Application 执行之前,所有的资源都申请完毕,每一个 task 直接使用资源
    就可以了,不需要 task 在执行前自己去申请资源,task 启动就快了,task 执行快了,
    stage 执行就快了,job 就快了,application 执行就快了。
    缺点:直到最后一个 task 执行完成才会释放资源,集群的资源无法充分利用。
     细粒度资源申请(MapReduce)
    Application 执行之前不需要先去申请资源,而是直接执行,让 job 中的每一个 task
    在执行前自己去申请资源,task 执行完成就释放资源。
    优点:集群的资源可以充分利用。
    缺点:task 自己去申请资源,task 启动变慢,Application 的运行就相应的变慢了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值