2017-03-05 74 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調度)。

此外,公平調度並不意味着提交的應用程序將立即獲得所需的資源共享。如果應用程序被提交給一個繁忙的集羣,並且所請求的資源不能分配,它將不得不等待其他應用程序完成,或者使用搶先機制(如果啓用)釋放資源。

  • 與​​一起使用的參數聲明運行應用程序所需的資源量。這個「什麼」問題的一部分
  • 公平調度程序的作業是如果可能的話分配這些資源。其配置確定可以分配給隊列或應用程序的資源量。這個「如何」的部分問題。

正如你所看到的,這兩件事並不相互排斥,提交參數是有意義的並且被接受。通常所請求資源的數量不得超過羣集上可用資源的數量,否則作業將失敗。您還應該將其保留在特定隊列的資源份額之下。