我有两个独立的群集管理器与Spark节点群集。我正在使用同一个触发多个作业 sc
我发现由于fifo的特性,我的作业被一个接一个地调度,所以我尝试使用公平调度
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独立集群模式?是否有更详细的描述页面?在工作安排上,我似乎找不到太多关于公平和独立的东西。我关注这个问题。我在这里遗漏了什么吗?
1条答案
按热度按时间oug3syen1#
我不认为独立是个问题。您描述了只创建一个池,所以我认为您的问题是您至少还需要一个池,并将每个作业分配给不同的池。
公平调度是跨池完成的,同一池中的任何内容都将以fifo模式运行。
这是基于以下文档:https://spark.apache.org/docs/latest/job-scheduling.html#default-池的行为