Spark jobserver 如何使用Spark Jobserver配置公平调度程序?
当我同时发布jobserver请求时,它们似乎总是以FIFO模式处理。这是尽管我尽了最大努力,使公平调度。我如何确保我的请求总是并行处理 背景:在我的集群中,有一个SparkContext,用户可以向其中发送处理数据的请求。每个请求可能作用于不同的数据块,但操作总是相同的。一个小的一分钟工作不应该等待一个大的一小时工作完成 直觉上,我预计会发生以下情况(请参阅下面的配置): 上下文在公平池中运行。每次用户发送处理某些数据的请求时,Spark都应该将公平池分割开来,并提供一部分集群资源来处理该新请求。然后,每个请求在FIFO模式下与任何其他并发请求并行运行 以下是我同时运行作业时实际发生的情况: 该界面显示“1个公平调度程序池”,并列出一个名为“default”的活动(FIFO)池。似乎所有内容都在同一个FIFO池中执行,而FIFO池本身在公平池中单独运行。我可以看到我的公平池详细信息在Spark的环境页面上正确加载,但我的请求都是以FIFO方式处理的 我如何配置我的环境/应用程序,使每个请求实际上与其他请求并行运行?我是否需要为每个请求创建单独的上下文?我是否在公平池中创建任意数量的相同FIFO池,然后在每次发出请求时以某种方式选择一个空池?考虑到Jobserver的目标,似乎所有这些都应该是自动的,并且设置起来并不复杂。下面是我的配置中的一些细节,以防我犯了一个简单的错误 从local.conf:Spark jobserver 如何使用Spark Jobserver配置公平调度程序?,spark-jobserver,Spark Jobserver,当我同时发布jobserver请求时,它们似乎总是以FIFO模式处理。这是尽管我尽了最大努力,使公平调度。我如何确保我的请求总是并行处理 背景:在我的集群中,有一个SparkContext,用户可以向其中发送处理数据的请求。每个请求可能作用于不同的数据块,但操作总是相同的。一个小的一分钟工作不应该等待一个大的一小时工作完成 直觉上,我预计会发生以下情况(请参阅下面的配置): 上下文在公平池中运行。每次用户发送处理某些数据的请求时,Spark都应该将公平池分割开来,并提供一部分集群资源来处理该新请
contexts {
mycontext {
spark.scheduler.mode = FAIR
spark.scheduler.allocation file = /home/spark/job-server-1.6.0/scheduler.xml
spark.scheduler.pool = fair_pool
}
}
从scheduler.xml:
<?xml version="1.0"?>
<allocations>
<pool name="fair_pool">
<schedulingMode>FAIR</schedulingMode>
<weight>1</weight>
</pool>
</allocations>
公平的
1.
谢谢你的建议。很抱歉对术语造成混淆-job一词在jobserver中有两种含义 我在查看我的配置时发现 spark.scheduler.allocation文件应为spark.scheduler.allocation.file 所有的值都是这样引用的
contexts {
mycontext {
spark.scheduler.mode = "FAIR"
spark.scheduler.allocation.file = "/home/spark/job-server-1.6.0/scheduler.xml"
spark.scheduler.pool = "fair_pool"
}
}
还要确保已创建mycontext,并且在提交作业时正在传递mycontext
您还可以使用Spark Master UI验证mycontext是否正在使用FAIR scheduler。感谢您指出缺少的时段。改变了这一点,公平池开始出现在用户界面上。但是,作业仍在默认池中运行。关键的变化是在我的scala代码中添加了
sc.setLocalProperty(“spark.scheduler.pool”、“fair\u pool”)
。我认为这可以在我的Jobserver配置文件中指定-显然不是@格雷厄姆,你能制造一个问题吗@宙斯