YARN“ Fair Scheduler”如何与spark-submit配置参数一起使用

Ami*_*jan 3 hadoop hadoop-yarn apache-spark

我有一个关于YARN“ Fair Scheduler”的基本问题。根据“公平调度程序的定义 -公平调度是一种为应用程序分配资源的方法,以使所有应用程序随时间平均获得相等的资源份额”。

以下是我的理解和问题。

(1)如果在YARN上运行多个应用程序,则将确保所有应用程序在一段时间内或多或少地获得相等的资源份额。

(2)我的问题是,如果在YARN中将此属性设置为true,那么如果在提交spark-submit时使用以下配置,这有什么区别吗?

   (i)   driver-memory
   (ii)  executor-memory
   (iii) num-executors
   (iv)  executor-cores
Run Code Online (Sandbox Code Playgroud)

如果在使用spark-submit时提及这些conf参数,将会发生什么?这些参数将被接受并且资源将根据请求进行分配,或者这些conf参数将被忽略,并且YARN将基于公平调度为spark应用分配一些默认数量的资源。

请让我知道这个问题是否需要其他说明。谢谢

use*_*411 5

实际上,Fair Scheduler比这要复杂得多。在顶层,资源被组织到池/队列中,每个池/队列可以有自己的权重和内部调度策略,这些策略不一定公平(如果需要,可以使用FIFO调度)。

此外,“公平调度”并不意味着提交的应用程序将立即获得所需的资源共享。如果将应用程序提交到繁忙的群集中,并且无法分配请求的资源,则它必须等到其他应用程序完成,或者使用抢占机制(如果启用)释放资源。

  • 与用于spark-submit声明运行应用程序所需资源量的参数一起使用。这是“ 什么 ”问题的一部分
  • 公平调度程序的任务是尽可能分配这些资源。它的配置确定可以分配给队列或应用程序的资源量。这是“ 如何 ”问题的一部分。

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