|NO.Z.00094|——————————|BigDataEnd|——|Hadoop&Spark.V10|——|Spark.v10|Spark 原理 源码|作业执行原理&调度策略|

一、作业执行原理
### --- 调度策略

~~~     TaskScheduler会先把 DAGScheduler 给过来的 TaskSet 封装成 TaskSetManager 扔到任务队列里,
~~~     然后再从任务队列里按照一定规则把它们取出来,由 SchedulerBackend 发送给Executor运行;
### --- TaskScheduler

~~~     TaskScheduler 以树的方式来管理任务队列,树中的节点类型为 Schedulable,
~~~     叶子节点为TaskSetManager,非叶子节点为Pool:
~~~     TaskScheduler 支持两种调度策略:FIFO(默认调度策略)、FAIR。
二、作业执行原理
### --- FIFO 调度策略

~~~     FIFO调度策略,TaskSetManager 按照到来的先后次序进入队列;
~~~     出队时直接拿最先进入队列的 TaskSetManager。
~~~     FIFO调度策略是默认模式,在此模式下,只有一个 TaskSetManager 池。
### --- Fair 调度策略

~~~     Fair 模式中有一个 rootPool 和多个子 Pool,各个子 Pool 中存储着所有待分配的 TaskSetManager ;
~~~     在 Fair 模式中,需要先对子 Pool 进行排序,
~~~     再对子 Pool 里面的 TaskSetManager 进行排序,因为Pool和
~~~     TaskSetManager 都继承了 Schedulable trait,因此可使用相同的排序算法;
### --- 每个要排序的对象包含三个属性:

~~~     runningTasks值(正在运行的Task数)
~~~     minShare值(时间)
~~~     weight值(权重)
~~~     比较时会综合考量 runningTasks 值,minShare 值以及 weight 值。
~~~     备注:minShare、weight的值在配置文件 fairscheduler.xml 中被指定。
~~~     调度池在构建阶段会先读取 fairscheduler.xml ($SPARK_HOME/conf)文件的相关配置,
### --- 然后进行比较:

~~~     如果A对象的 runningTasks > minShare,B对象的 runningTasks < minShare,
~~~     那么B排在A前面;(runningTasks比minShare小的先执行)
~~~     如果AB对象的 runningTasks < minShare,
~~~     么就比较 runningTasks 与 minShare 的比值,谁小谁排前面;(使用率低的先执行)
~~~     如果AB对象的 runningTasks > minShare,
~~~     那么就比较runningTasks与weight的比值(权重使用率),谁小谁排前面。(权重使用率低的先执行)
~~~     如果上述比较均相等,则比较名字
~~~     整体上来说就是通过 minShare 和 weight 这两个参数控制比较过程,
~~~     做到让 minShare 使用率和权重使用率少(实际运行task比例较少)的先运行。
~~~     FAIR模式排序完成后,所有的 TaskSetManager 被放入一个 ArrayBuffer 里,
~~~     之后依次被取出并发送给 Executor执行。
~~~     从调度队列中拿到 TaskSetManager 后,由于 TaskSetManager 封装了一个 Stage 的所有 Task,
~~~     并负责管理调度这些 Task,
~~~     那么接下来的工作就是 TaskSetManager 按照一定的规则一个个取出 Task 
~~~     给 TaskScheduler,TaskScheduler 再交给 SchedulerBackend ,最终分发到Executor上执行。

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(30)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示