YARN "Fair Scheduler" 如何使用 spark-submit 配置参数

how does YARN "Fair Scheduler" work with spark-submit configuration parameter

我有一个关于 YARN 的基本问题 "Fair Scheduler"。根据 "Fair Scheduler- Fair scheduling is a method of assigning resources to applications such that all apps get, on average, an equal share of resources over time" 的 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 参数将被简单地忽略并且 spark 应用程序将根据公平调度由 YARN 分配一些默认数量的资源。

如果这个问题需要任何其他说明,请告诉我。谢谢

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

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

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

如您所见,这两者并不相互排斥,提交参数是有意义的并且可以接受。通常请求的资源量不能超过集群上可用的资源量,否则作业将失败。您还应该将其保持在特定队列的资源共享之下。