3

我有 2 个节点集群和spark 独立集群管理器。我使用 Scala 多线程触发了多个作业sc。我发现由于FIFO的性质,我的作业被一个接一个地安排,所以我尝试使用FAIR调度

    conf.set("spark.scheduler.mode", "FAIR")
    conf.set("spark.scheduler.allocation.file", sys.env("SPARK_HOME") + "/conf/fairscheduler.xml")

    val job1 = Future {
    val job = new Job1()
    job.run()
    }

    val job2 =Future {
    val job = new Job2()
    job.run()
    }


    class Job1{
        def run()
            sc.setLocalProperty("spark.scheduler.pool", "mypool1")
        }
        }

    class Job2{
        def run()
            sc.setLocalProperty("spark.scheduler.pool", "mypool2")
        }
        }



 <pool name="mypool1">
 <schedulingMode>FAIR</schedulingMode>
 <weight>1</weight>
 <minShare>2</minShare>    
  </pool>

 <pool name="mypool2">
 <schedulingMode>FAIR</schedulingMode>
 <weight>1</weight>
 <minShare>2</minShare>    
  </pool>

Job1 和 Job2 将从启动器类触发。即使在设置了这些属性之后,我的工作也是在FIFO中处理的。FAIR是否可用于 Spark Standalone 集群模式?是否有更详细描述它的页面?我似乎在 Job Scheduling 中找不到太多关于 FAIR 和 Standalone 的信息。我正在关注这个SOF 问题。我在这里遗漏了什么吗?

4

1 回答 1

3

我不认为独立是问题。您描述了只创建一个池,所以我认为您的问题是您至少需要一个池并将每个作业分配给不同的池。

FAIR 调度是跨池完成的,同一个池中的任何东西都将以 FIFO 模式运行。

这是基于此处的文档: https ://spark.apache.org/docs/latest/job-scheduling.html#default-behavior-of-pools

于 2016-10-27T20:07:32.123 回答