揭祕Apache Hadoop YARN,第三部分:調度概念

在第1部分和第2部分,我們介紹了YARN資源分配的基礎知識。在本部分中,我們將提供集群調度的概述,並介紹Fair Scheduler,YARN提供的一個調度程序。

獨立的計算機可以有多個CPU核心,每個核心運行一個進程,但是可以有多達幾百個進程同時運行。調度程序是操作系統的一部分,將進程分配給一個CPU 內核執行。

如先前在第1部分:集群和YARN基礎中所述,應用程序由群集上的多個任務(通常在不同的主機上)組成。集群調度程序必須處理以下問題:

  • 多租戶:在集群上,許多用戶代表多個用戶組啟動許多不同的應用程序。集群調度程序允許不同的工作負載同時運行。
  • 可擴展性:集群調度程序需要擴展到運行許多應用程序的大型集群。這意味著增加集群的大小應該提高整體性能,而不會對系統延遲產生負面影響
揭秘Apache Hadoop YARN,第三部分:調度概念

YARN中調度

ResourceManager(RM)跟蹤群集上的資源,並將它們分配給需要它們的應用程序。調度程序是RM的一部分,並在共享資源中履行組織策略。請注意:

  • YARN使用隊列在多個租戶之間共享資源。這將在下面的“隊列介紹”中更詳細地介紹。
  • ApplicationMaster(AM)跟蹤每個任務的資源需求並協調容器請求。這種方法有更好的擴展性,因為RM /調度程序不需要跟蹤在集群上運行的所有容器。

公平調度(Fair Scheduler)

Fair Scheduler是YARN支持的調度器中的受歡迎的選擇(Cloudera推動)。簡單的說,它在集群上運行的所有作業之間公平共享資源。接下來的幾節我們會詳細說明Fair Scheduler內部的常用控制機制。

隊列介紹

隊列是YARN調度程序的組織結構,允許多個租戶共享集群。當應用程序提交到YARN時,它們由調度程序分配到隊列。根(root)隊列是所有隊列的父級。所有其他隊列都是根隊列或另一個隊列(也稱為分層隊列)的子代。隊列通常對應於用戶,部門或優先級。

下圖提供了fair-scheduler.xml的基本Fair Scheduler示例,以及每個隊列在集群中的份額的圖形表示。

  • 圖中有4個部門在隊列中 (marketing, sales, datascience, 和 admin).
  • 有一個特殊的admin隊列,用戶fred或greg,管理員才能使用
揭秘Apache Hadoop YARN,第三部分:調度概念

使用分層隊列

一個級別的隊列允許沿著一個維度(例如每個團隊一個隊列)共享該集群,但是在多個維度(例如,每個團隊和優先級)之間共享集群是常見的。公平調度器允許嵌套隊列形成分層隊列結構,其中每個級別可以對應於其父隊列下的維度。

例如,下面的圖2顯示了按團隊和優先級維度共享的資源。第一級對應於團隊(例如root.datascience),並且每個第一級隊列可以具有用於來自該特定團隊的作業的高優先級和低優先級的子隊列(例如,root.datascience.short_jobs和root.datascience.best_effort_jobs)

隊列名

本文和本系列的後續部分中,我們將使用不同的方式指代queue,比如:如root或root.sales.northamerica。在不混淆的情況下,儘量使用短的名字,即northamerica而不是root.sales.northamerica。

示例#1:單個隊列中的權重

在sales隊列中,有兩個子隊列:northamerica和europe。每個都具有30.0的權重,因此在銷售中的每個子隊列的公平共享實際上是50%。

在marketing隊列中,有兩個權重不同的子隊列:reports和website。reports隊列分配的資源是website隊列作業的兩倍。然而,它們在一起的權重仍然由marketing隊列的權重控制。

隊列權重和自頂向下調度

隊列權重用於確定隊列的公平共享。 Fair Scheduler從根隊列開始,並查看所有直接子隊列的權重,以確定它們的公平共享。每個子隊列的公平共享進一步針對其子隊列的集合進行評估.

權重的自頂向下視圖

marketing隊列的權重為3.0,sales隊列的權重為4.0,datascience隊列的權重為13.0。因此,從root的分配將是15%到marketing,20%的sales,65%的datascience。

在datascience的份額中,資源都被分配給short_jobs隊列。如果沒有分配給short_jobs隊列的作業,則best_effort_jobs隊列中的作業將被分配資源。

揭秘Apache Hadoop YARN,第三部分:調度概念

擴展閱讀

要獲得有關Fair Scheduler的更多信息,請參閱在線文檔http://archive.cloudera.com/cdh5/cdh/5/hadoop/hadoop-yarn/hadoop-yarn-site/FairScheduler.html。

總結

  • 調度程序是計算機操作系統的一部分,根據需要將資源分配給活動進程。
  • 集群調度器將資源分配給在集群上運行的應用程序。集群調度程序位多租戶和可擴展性而設計。
  • YARN提供多種調度程序供選擇。 Fair Scheduler被廣泛使用。在最簡單情況下,在集群上運行的所有作業之間均公平共享資源。
  • 公平調度程序將應用程序分配到隊列。您可以根據應用程序和部門需求設置隊列上的屬性以調整計劃行為。隊列權重是控制隊列中應用程序公平共享的一種方法。共享資源由上而下從root上分配,一次評估一個級別。


分享到:


相關文章: