我有一个关于YARN" Fair Scheduler"的基本问题。根据" Fair Scheduler的the definition - 公平调度是一种为应用程序分配资源的方法,使得所有应用程序平均可以随时间获得相等的资源份额"。
以下是我的理解和问题。
(1)如果YARN上运行多个应用程序,那么它将确保所有应用程序在一段时间内获得或多或少相等的资源份额。
(2)我的问题是,如果在YARN中此属性设置为true,那么如果我们在提交spark-submit时使用以下配置会有什么不同吗?
(i) driver-memory
(ii) executor-memory
(iii) num-executors
(iv) executor-cores
如果我在使用spark-submit时提到这些conf参数会怎样?这些参数是否会被接受,资源将根据请求进行分配,否则这些conf参数将被忽略,并且YARN将根据公平调度为火花应用程序分配一些默认的资源。
如果此问题需要进行任何其他澄清,请告诉我。感谢
答案 0 :(得分:5)
实际上Fair Fairler比这更复杂。在顶层,资源被组织成池/队列,其中每个都可以有自己的权重和内部调度策略,而不是necessarily fair(如果需要,可以使用FIFO调度)。
此外,公平调度并不意味着提交的应用程序将立即需要共享资源。如果将应用程序提交到繁忙的集群并且无法分配请求的资源,则必须等到其他应用程序完成,或者使用抢占机制(如果已启用)释放资源。
spark-submit
一起使用的参数声明了运行应用程序所需的资源量。这" 什么"部分问题正如您所看到的,这两件事并不相互排斥,并且提交参数是有意义的并且被接受。通常,请求的资源量不得超过群集上可用的资源量,否则作业将失败。您还应将其保持在特定队列的资源共享之下。