天天看點

Yarn配置每個隊列屬性1     在隊列中設定使用者限制2     為特定隊列設定最大應用程式限制3    為特定隊列設定Application-Master 資源限制4     使用 ACL 控制對隊列的通路5    為特定隊列啟用搶占6     為特定隊列啟用隊列内搶占7    配置動态隊列屬性8     在特定隊列中設定排序政策

這是CDP中Yarn使用手冊系列的一篇。之前的文章請參考《 Apache Hadoop Yarn概述 》、《 CDP中使用YARN Web UI和CLI CDP中配置Apache Hadoop Yarn的安全性 CDP中Yarn資源排程與管理 CDP中Yarn管理隊列 Yarn在全局級别配置排程程式屬性

》。

隊列屬性包含定義隊列行為的設定。使用隊列屬性,您可以定義不需要直接從父隊列繼承屬性的設定,并定義特定于隊列的設定。

在 Cloudera Manager 中,您可以使用隊列屬性來檢視和配置隊列屬性。

1.   在Cloudera Manager 中,選擇叢集> YARN 隊列管理器UI 服務。

Yarn配置每個隊列屬性1     在隊列中設定使用者限制2     為特定隊列設定最大應用程式限制3    為特定隊列設定Application-Master 資源限制4     使用 ACL 控制對隊列的通路5    為特定隊列啟用搶占6     為特定隊列啟用隊列内搶占7    配置動态隊列屬性8     在特定隊列中設定排序政策
2.   單擊隊列上的三個垂直點,然後選擇檢視/編輯隊列屬性選項。
Yarn配置每個隊列屬性1     在隊列中設定使用者限制2     為特定隊列設定最大應用程式限制3    為特定隊列設定Application-Master 資源限制4     使用 ACL 控制對隊列的通路5    為特定隊列啟用搶占6     為特定隊列啟用隊列内搶占7    配置動态隊列屬性8     在特定隊列中設定排序政策
3.   在“隊列屬性”視窗中,輸入屬性值并單擊“儲存”。
Yarn配置每個隊列屬性1     在隊列中設定使用者限制2     為特定隊列設定最大應用程式限制3    為特定隊列設定Application-Master 資源限制4     使用 ACL 控制對隊列的通路5    為特定隊列啟用搶占6     為特定隊列啟用隊列内搶占7    配置動态隊列屬性8     在特定隊列中設定排序政策

1     在隊列中設定使用者限制

設定配置設定給每個葉隊列使用者的最小資源百分比。

最小使用者限制(最小使用者極限百分比)屬性可以用于設定配置設定給每個葉隊列使用者資源的最小百分比。例如,要在五個使用者之間平等共享“服務”葉隊列容量,您可以将最小使用者限制百分比設定為 20%。

根據本例配置使用者限制,請執行以下操作:

1.   在 Cloudera Manager 中,選擇叢集> YARN 隊列管理器UI 服務。圖形隊列層次結構顯示在概覽頁籤中。

2.   單擊服務隊列上的三個垂直點,然後選擇 檢視/編輯隊列屬性選項。

3.   在“隊列屬性”對話框中,在“最小使用者限制”文本框中輸入20 。

4.   點選儲存。

此設定确定任何使用者的隊列容量份額可以縮小到的最小限制。無論此限制如何,如果有空閑資源可用,任何使用者都可以進入隊列并占用超過其配置設定的份額。

下表顯示了如何在使用者将作業送出到最小使用者限制百分比設定為 20% 的隊列時調整隊列資源:

Yarn配置每個隊列屬性1     在隊列中設定使用者限制2     為特定隊列設定最大應用程式限制3    為特定隊列設定Application-Master 資源限制4     使用 ACL 控制對隊列的通路5    為特定隊列啟用搶占6     為特定隊列啟用隊列内搶占7    配置動态隊列屬性8     在特定隊列中設定排序政策

·      對于單個使用者連續送出多個作業,隊列資源以相同的方式進行調整。如果沒有其他使用者請求隊列資源,第一個作業将獲得 100% 的隊列容量。當使用者送出第二個作業時,每個作業接收隊列容量的 50%。當使用者送出第三個作業時,每個作業接收隊列容量的 33%。如果第四個使用者随後送出作業,則每個作業将獲得隊列容量的 25%。當所有使用者送出的作業總數達到5個時,每個作業将獲得隊列容量的20%,後續使用者必須等待隊列容量釋放(假設未啟用搶占)。

·      容量排程程式還管理資源以減少使用者數量。随着使用者的應用程式完成運作,其他具有突出需求的現有使用者開始收回該份額。

·      請注意,盡管使用者之間存在這種共享,但容量排程程式的 FIFO 應用程式排程順序不會改變。這保證了使用者不能通過不斷送出新的應用程式來獨占隊列。首先送出的應用程式(以及相應的使用者)總是比稍後送出的應用程式獲得更高的優先級。

Capacity Scheduler 的葉子隊列還可以使用user-limit-factor 屬性來控制使用者資源配置設定。此屬性表示任何單個使用者最多可以消耗的隊列容量比例,無論叢集中是否存在空閑資源。

根據本示例配置最大限制(user-limit-factor),請執行以下操作:

2.   單擊要設定限制的隊列上的三個垂直點,然後選擇 檢視/編輯隊列屬性選項。

3.   在“隊列屬性”對話框中,1 在“使用者限制因子”文本框中輸入。

預設值“1”表示隊列中的任何單個使用者最多隻能占用隊列配置的容量。這可以防止單個隊列中的使用者獨占叢集中所有隊列的資源。将該值設定為“2”會将隊列的使用者限制為隊列配置容量的兩倍。将其設定為 0.5 值将限制任何使用者使用超過隊列容量一半的資源。

2     為特定隊列設定最大應用程式限制

為避免由于無法管理的負載(由惡意使用者或意外引起)導緻系統崩潰,容量排程程式使您能夠對并發活動(正在運作和待處理)應用程式的總數設定靜态、可配置的限制任何時候。

您可以使用最大應用程式隊列屬性設定最大應用程式限制屬性。在任何特定隊列中運作應用程式的限制是該總限制的一小部分,與其容量成正比。這是一個硬限制,這意味着一旦隊列達到此限制,該隊列的任何新應用程式都将被拒絕,用戶端将不得不等待并稍後重試。

要在特定隊列上設定應用程式限制 ( yarn.scheduler.capacity.<queue-path>.maximum-applications ),請執行以下操作:

1.  在 Cloudera Manager 中,選擇叢集> YARN 隊列管理器 UI 服務。圖形隊列層次結構顯示在概覽頁籤中。

2.  單擊隊列上的三個垂直點,然後選擇檢視/編輯隊列屬性選項。

3.  在隊列屬性對話框中,在最大應用程式文本框中輸入最大應用程式限制。

4.  點選儲存。

3    為特定隊列設定Application-Master 資源限制

Application Master (AM) 資源限制可用于設定專門配置設定給 Application Master 的叢集資源的最大百分比。預設值為 10%,存在是為了避免跨應用程式死鎖,其中叢集中的重要資源完全被運作應用程式主要的容器占用。

此屬性還間接控制叢集中并發運作的應用程式數量,每個隊列僅限于與其容量成比例的運作應用程式數量。

要為特定隊列設定最大 Application Masters 資源限制 ( yarn.scheduler.capacity.maximum-am-resource-percent ):

1.   在Cloudera Manager 中,選擇叢集> YARN 隊列管理器UI 服務。圖形隊列層次結構顯示在概覽頁籤中。

3.   在隊列屬性對話框中,在最大AM 資源限制文本框中輸入限制 。

4     使用 ACL 控制對隊列的通路

使用通路控制清單 (ACL) 來控制使用者和管理者對容量排程程式隊列的通路權限。

應用程式送出實際上隻能發生在葉隊列級别,但是在父隊列上設定的 ACL 限制将應用于其所有後代隊列。

在容量排程程式中,通過使用送出應用程式 ACL參數授予對使用者群組清單的隊列通路權限來配置ACL。清單的格式是“user1,user2 group1,group2”——一個逗号分隔的使用者清單,後跟一個空格,後跟一個逗号分隔的組清單。

注意

根隊列的Submit Application ACL的預設值為yarn,這意味着隻有預設yarn 使用者才能向該隊列送出應用程式。是以,要為特定使用者群組提供對隊列的通路權限,您必須将送出應用程式 ACL的值顯式設定為這些使用者群組。

值送出應用ACL(acl_submit_applications)也可以設定為“*”(星号),以允許通路所有的使用者群組,也可以設定為“”(空格字元)阻止通路到所有使用者群組。

如前所述,父隊列上的 ACL 設定适用于其所有後代隊列。是以,如果父隊列使用“*”(星号)值(或未指定)允許通路所有使用者群組,則其子隊列不能限制通路。同樣,在限制對子隊列的通路之前,必須先将父隊列設定為“”(空格字元)以阻止對所有使用者群組的通路。

例如,以下屬性會将根送出應用程式 ACL值設定為“”(空格字元)以阻止對所有使用者群組的通路,并将對其子“support”隊列的通路限制為使用者“sherlock”和“john” ”和“cfo-group”組的成員:

每個子隊列都通過配置屬性綁定到其父隊列。頂級的“支援”、“工程”和“營銷”隊列将綁定到“根”隊列。

要基于此示例設定 ACL,請執行以下操作:

2.   單擊要設定 ACL 的隊列上的三個垂直點,然後選擇 檢視/編輯隊列屬性選項。

3.   在隊列屬性對話框框,添加sherlock,john cfo-group在送出申請ACL文本框中。

4.   點選 儲存。

單獨的 ACL 可用于控制各個級别的隊列管理。隊列管理者可以向隊列送出應用程式,殺死隊列中的應用程式,并擷取有關隊列中任何應用程式的資訊(而普通使用者被限制檢視其他使用者應用程式的所有詳細資訊)。

如果隊列管理 ACL值設定為“ ”(空格字元),則會阻止對所有使用者群組的通路。如果 ACL 設定為 sherlock,john cfo-group,則它允許通路使用者“sherlock”和“john”以及“cfo-group”組的成員。

5    為特定隊列啟用搶占

容量排程程式搶占允許較高優先級的應用程式搶占較低優先級的應用程式。

可能會發生這樣的情況:隊列具有保證級别的叢集資源,但必須等待運作應用程式,因為其他隊列正在使用所有可用資源。如果啟用搶占,高優先級的應用程式不必等待,因為低優先級的應用程式已經占用了可用容量。啟用搶占後,服務不足的隊列幾乎可以立即開始聲明其配置設定的叢集資源,而無需等待其他隊列的應用程式完成運作。

如果排程器配置中禁用搶占政策,則無法啟用特定隊列的搶占。有關設定排程程式級别搶占的資訊,請參閱

配置搶占

您可以禁用特定隊列的隊列搶占(yarn.resourcemanager.scheduler.monitor.enable)。

3.   在隊列屬性對話框中,取消選中 啟用搶占複選框。

6     為特定隊列啟用隊列内搶占

隊列内搶占防止隊列中的資源不平衡。

隊列内搶占有助于根據配置的使用者限制或應用程式優先級在隊列内有效配置設定資源。

如果排程器配置中關閉了隊列内搶占政策,則無法為特定隊列開啟隊列内搶占。有關設定排程程式級别的隊列内搶占的資訊,請參閱

配置隊列内搶占

禁用特定隊列的隊列内搶占(yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.enabled)

3.   在Queue Properties對話框中,取消選中 Enable Intra Queue Preemption複選框。

7    配置動态隊列屬性

動态隊列是根據動态放置規則的預定義表達式自動建立的。

動态建立的葉隊列的隊列名稱旁邊将顯示一個葉圖示。您可以在隊列屬性的動态自動建立隊列部分檢視動态建立的葉隊列 的隊列屬性。您可以通過單擊其托管父隊列的Edit Child Queues選項來配置動态葉隊列屬性,例如設定使用者限制、ACL、排序政策。在托管父隊列級别設定的隊列屬性将應用于其所有葉隊列。

8     在特定隊列中設定排序政策

根據您的要求在容量排程程式中設定 FIFO(先進先出)或公平排程政策。

容量排程程式中的預設排序政策是 FIFO(先進先出)。FIFO 通常适用于可預測的重複批處理作業,但有時不适用于按需或探索性工作負載。對于這些類型的工作,公平排程通常是更好的選擇。靈活的排程政策使您能夠在每個隊列的基礎上為不同類型的工作負載配置設定 FIFO 或公平排序政策。

8.1  FIFO 和公平共享政策示例

FIFO(先進先出)和公平排程政策在批處理作業和臨時作業中的工作方式不同。

批處理示例

在下面的示例中,兩個隊列具有相同的可用資源。一種使用 FIFO 排序政策,另一種使用公平共享政策。使用者一個接一個地向每個隊列送出三個作業,等待每個作業開始的時間剛好足夠。第一個作業使用隊列中資源限制的 6 倍,第二個 4 倍,最後一個 2 倍。

·      在 FIFO 隊列中,6x 作業将啟動并運作至完成,然後 4x 作業将啟動并運作至完成,然後是 2x 作業。他們将按照 6x、4x、2x 的順序開始和結束。

·      在 Fair 隊列中,6x 作業将開始,然後是 4x 作業,然後是 2x 作業。所有三個将同時運作,每個使用 1/3 的可用應用程式資源。它們通常會按以下順序完成:2x、4x、6x。

Ad Hoc Plus 批處理示例

在此示例中,正在運作使用 10 倍隊列資源的作業。作業完成一半後,同一個使用者開始第二個作業,需要 1 倍的隊列資源。

·      在 FIFO 隊列中,10x 作業将一直運作,直到它不再使用所有隊列資源(例如,Map階段完成),然後 1x 作業将啟動。

·      在 Fair 隊列中,1x 作業将盡快啟動、運作和完成——通過損耗從 10x 作業中擷取資源。

8.2  排序政策的最佳實踐

·      排序政策是基于每個隊列配置的,預設排序政策設定為 FIFO。公平性通常最适合按需、互動式或探索性工作負載,而 FIFO 可以更有效地用于可預測的重複批處理。您應該将這些不同類型的工作負載隔離到配置有适當排序政策的隊列中。

·      · 在同時支援大型和小型應用程式的隊列中,大型應用程式可能會“餓死”(無法獲得足夠的資源)。為避免這種情況,請為大作業和小作業使用不同的隊列,或使用基于大小的權重來減少排序邏輯傾向于較小應用程式的自然趨勢。

·      · 使用最大AM 資源限制排程程式屬性來限制隊列中運作的并發應用程式的數量,以避免出現同時運作太多應用程式的情況。每個隊列的限制與其隊列容量和使用者限制成正比。此屬性指定為浮點數,例如:0.5 = 50%。預設設定為 0.1=10%。該屬性可以通過設定所有隊列進行設定

最大AM資源限制

在根級别屬性,也可以在以每隊列基礎上通過設定覆寫

設定預設的應用掌握資源限制

在隊列級别屬性.

8.3  配置隊列排序政策

您可以将隊列排序政策的屬性 ( yarn.scheduler.capacity.<queue-path>.ordering-policy ) 配置為 FIFO 或 Fair。預設設定為先進先出。

2.   單擊要配置隊列排序政策的隊列上的三個垂直點,然後選擇檢視/編輯隊列屬性選項。

3.   在Queue Properties對話框中,使用Ordering Policy 下拉框将排序政策選擇為FIFO或Fair。

原文連結:

https://docs.cloudera.com/cdp-private-cloud-base/latest/yarn-allocate-resources/topics/yarn-configure-queue-properties.html