spark的task调度器(FAIR公平调度算法)

本文详细介绍了Spark的FAIR公平调度器的工作原理,包括调度器的生成、配置文件解析、TaskSetManager的添加以及公平调度算法的实现。重点讨论了如何根据配置文件设置公平调度策略,并解释了在任务调度时如何根据任务需求和权重进行排序。
摘要由CSDN通过智能技术生成

FAIR公平调度器

代码流程

在fair调度器实例生成时,与fifo的调度器生成时有些许的区别,首先看看fair调度器生成时,需要的流程,由类FairSchedulableBuilder进行的调度器的实现:

在使用fair的调度器时,schedulableBuilder的实现为FairSchedulableBuilder.

schedulableBuilder.buildPools()

 

接下来看看这个函数的内部实现:

override def buildPools() {

读取spark.scheduler.allocation.file配置项配置的fair调度器的配置文件路径.这个配置必须是xml配置文件.

如果这个配置没有配置,默认从class path中读取fairscheduler.xml配置文件.
  var is: Option[InputStream] = None
  try {
    is = Option {
      schedulerAllocFile.map { f =>
        new FileInputStream(f)
      }.getOrElse {
        Utils.getSparkClassLoader.getResourceAsStream(DEFAULT_SCHEDULER_FILE)
      }
    }
这里解析配置文件中的内容,解析文件过程(这个过程可能没有,没读取到配置文件),可以配置多个,这里会迭代生成:

1,先解析根路径pool,解析这个路径的name属性,得到这个属性的值为poolName.

2,根据pool路径下的子路径schedulingMode,并得到配置的text的值.默认值FIFO,

3,读取pool路径下的子路径minShare.并得到配置的text的值,默认为0.

4,读取pool路径下的子路径weight,并得到配置的text的值,默认值为1.

5,根据上面读取到的配置信息,再生成一个Pool实例,并

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值