2017-03-05 70 views
2

我对YARN“Fair Scheduler”有一个基本的疑问。根据“Fair Scheduler-公平调度的the definition”,公平调度是一种将资源分配给应用程序的方法,以便所有应用程序平均获得相同份额的资源。YARN“Fair Scheduler”如何与spark-submit配置参数配合使用

以下是我的理解和问题。 (1)如果多个应用程序在YARN上运行,那么它将确保所有应用程序在一段时间内会获得大致相同的资源份额。 (2)我的问题是,如果在YARN这个属性设置为true,那么如果我们在提交spark-submit的时候使用下面的配置,它会有什么不同?

(i) driver-memory 
    (ii) executor-memory 
    (iii) num-executors 
    (iv) executor-cores 

如果我在使用spark-submit的时候提到这些conf参数会怎么样?这些参数是否被接受,资源将按照请求分配,或者这些conf参数将被忽略,并且基于公平调度,YARN将为Spark应用程序分配一些默认的资源量。

请让我知道这个问题是否需要澄清。谢谢

回答

3

其实公平调度程序比这更复杂。在顶层,资源被组织到池/队列中,每个队列可以有自己的权重和内部调度策略,但不是necessarily fair(如果需要,可以使用FIFO调度)。

此外,公平调度并不意味着提交的应用程序将立即获得所需的资源共享。如果应用程序被提交给一个繁忙的集群,并且所请求的资源不能分配,它将不得不等待其他应用程序完成,或者使用抢先机制(如果启用)释放资源。

  • 与​​一起使用的参数声明运行应用程序所需的资源量。这个“什么”问题的一部分
  • 公平调度程序的作业是如果可能的话分配这些资源。其配置确定可以分配给队列或应用程序的资源量。这个“如何”的部分问题。

正如你所看到的,这两件事并不相互排斥,提交参数是有意义的并且被接受。通常所请求资源的数量不得超过群集上可用资源的数量,否则作业将失败。您还应该将其保留在特定队列的资源份额之下。

相关问题