我有2个节点集群与 spark standalone 集群管理器。我使用Scala多线程使用相同的sc
来触发多个作业。我发现由于 FIFO 性质,我的作业一个接一个地安排,所以我尝试使用< strong> 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群集模式?是否有页面 它在哪里详细描述?我似乎无法找到很多东西 工作安排中的公平和独立。我跟随this SOF问题。我在这里遗漏了什么?
答案 0 :(得分:2)
我不认为独立是问题所在。您描述了只创建一个池,所以我认为您的问题是您需要至少一个池并将每个作业分配给不同的池。
FAIR调度跨池完成,同一池中的任何内容都将以FIFO模式运行。
这是基于此处的文档: https://spark.apache.org/docs/latest/job-scheduling.html#default-behavior-of-pools