Yarn在全域性級別配置排程程式屬性

語言: CN / TW / HK

這是CDP中Yarn使用系列中的一篇,之前的文章請參考<使用YARN Web UI和CLI>、<CDP 中配置Yarn的安全性>、<CDP的Yarn資源排程與管理>和<CDP中Yarn管理佇列>。

您可以配置排程程式屬性來定義所有佇列的行為。所有父佇列和子佇列都繼承使用排程程式屬性設定的屬性。

在 Cloudera Manager 中,您可以使用排程程式配置選項卡來配置排程程式屬性。

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

  1. 在 YARN Queue Manager 視窗中,單擊Scheduler Configuration選項卡。

  1. 在Scheduler Configuration視窗中,輸入屬性的值並單擊Save。

設定全域性最大應用優先順序

您可以使用優先順序排程以更高的優先順序執行 YARN 應用程式,而不管叢集中已經執行的其他應用程式如何。YARN 將更多資源分配給以更高優先順序執行的應用程式,而不是那些以較低優先順序執行的應用程式。優先順序排程使您能夠在提交時和執行時動態設定應用程式的優先順序。

優先順序排程僅適用於 FIFO(先進先出)排序策略。FIFO 是預設的容量排程程式排序策略。

要設定應用程式優先順序(yarn.cluster.max-application-priority),請執行以下操作:

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

  2. 單擊排程程式配置選項卡。

  3. 在最大應用程式優先順序文字框中輸入優先順序。

  4. 點選儲存。

配置搶佔

搶佔允許較高優先順序的應用程式搶佔較低優先順序的應用程式。

可能會發生這樣的情況:佇列具有保證級別的叢集資源,但必須等待執行應用程式,因為其他佇列正在使用所有可用資源。如果啟用搶佔,則優先順序較高的應用程式不必等待,因為優先順序較低的應用程式已佔用可用容量。當您啟用搶佔 ( yarn.resourcemanager.scheduler.monitor.enable ) 時,服務不足的佇列幾乎可以立即開始宣告其分配的叢集資源,而無需等待其他佇列的應用程式完成執行。

您可以使用優先順序排程以更高的優先順序執行 YARN 應用程式,而不管叢集中已經執行的其他應用程式如何。有關更多資訊,請參閱 設定全域性最大應用程式優先順序。

要在所有佇列上配置佇列搶佔選項,請執行以下操作:

  1. 在 Cloudera Manager 中,選擇Clusters > YARN Queue Manager UI服務。圖形佇列層次結構顯示在概覽 選項卡中。

  2. 單擊排程程式配置選項卡。

  3. 選中啟用監控策略複選框。

  4. 指定 org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy 作為監控策略文字框中使用的監控策略

  5. 配置所需的搶佔屬性:

  • 搶佔:僅觀察- 選中該複選框以執行策略,但不會影響具有搶佔和終止事件的叢集。

  • 搶佔:監控間隔 (ms) - 呼叫此策略之間的時間(以毫秒為單位)。將此值設定為較長的時間間隔會導致容量監視器的執行頻率降低。

  • Preemption: Maximum Wait Before Kill (ms) - 從應用程式請求搶佔和終止容器之間的時間(以毫秒為單位。將此設定為更高的值可使應用程式有更多時間響應搶佔請求並優雅地釋放容器。

  • 搶佔:每輪總資源- 在單輪中被搶佔的最大資源百分比。您可以使用此值來限制從叢集中回收容器的速度。在計算所需的總搶佔後,策略將其縮放回此限制。

  • Preemption: Over Capacity Tolerance - 為搶佔而忽略的超出目標容量的最大資源量。預設值為 0.1,這意味著資源管理器僅在佇列超出其保證容量 10% 時才開始搶佔佇列。這避免了資源輪換和積極搶佔。

  • Preemption: Maximum Termination Factor - 每個佇列的每個週期被搶佔的搶佔目標容量的最大百分比。您可以增加此值以加快資源回收。

  • 點選儲存。

  • 啟用佇列內搶佔

    佇列內搶佔防止佇列中的資源不平衡。

    佇列內搶佔有助於根據配置的使用者限制或應用程式優先順序在佇列內有效分配資源。

    要在所有佇列上配置佇列內搶佔(yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.enabled),請執行以下操作:

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

    2. 單擊排程程式配置選項卡。

    3. 選中啟用佇列內搶佔複選框。

    設定全域性應用限制

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

    您可以使用此配置屬性設定最大應用程式限制 ( yarn.scheduler.capacity.maximum-applications )。預設值為 10,000。

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

    2. 單擊排程程式配置選項卡。

    3. 在最大應用程式 文字框中輸入最大應用程式限制。

    4. 點選儲存。

    設定預設應用程式主資源限制

    Application Master (AM) 資源限制,可用於設定專門分配給 Application Master 的叢集資源的最大百分比。該屬性的預設值為 10%,存在是為了避免跨應用程式死鎖,其中叢集中的重要資源完全被執行 ApplicationMaster 的容器佔用。

    最大 AM 資源限制 ( yarn.scheduler.capacity.maximum-am-resource-percent ) 屬性還間接控制叢集中併發執行的應用程式數量,每個佇列限制為與其容量成比例的執行應用程式數量。

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

    2. 單擊排程程式配置選項卡。

    3. 在最大 AM 資源限制 文字框中輸入最大 AM 資源限制。

    4. 點選儲存。

    啟用非同步排程程式

    非同步排程器將 CapacityScheduler 排程與節點心跳解耦。這顯著改善了延遲。

    要啟用非同步排程(yarn.scheduler.capacity.schedule-asynchronously.enable),請執行以下操作:

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

    2. 單擊排程程式配置選項卡。

    3. 選中啟用非同步排程程式複選框。

    4. 點選儲存。

    使用 Cloudera Manager 配置佇列對映以使用來自應用程式標籤的使用者名稱

    您可以將佇列對映配置為使用應用程式標記中的使用者名稱,而不是提交作業的代理使用者。

    當用戶執行 Hive 查詢時,HiveServer2 提交從終端使用者而不是 Hive 使用者對映的佇列中的查詢。例如,當用戶alice以doAs=false模式提交 Hive 查詢時,作業將作為hive使用者在 YARN 中執行 。如果啟用了基於應用程式標籤的排程,則作業將根據使用者alice的佇列對映配置放置到目標佇列中 。

    有關佇列對映配置的更多資訊,請參閱管理放置規則。有關 Hive 訪問的資訊,請參閱Apache Hive文件。

    1. 在 Cloudera Manager 中,選擇YARN服務。

    2. 單擊配置選項卡。

    3. 搜尋ResourceManager。在Scope的 Filters 窗格下,選擇ResourceManager。

    4. 在yarn-site.xml 的ResourceManager 高階配置片段(安全閥)中新增以下內容:

      1. 啟用該application-tag-based-placement屬性以根據使用應用程式標籤傳遞的使用者 ID 啟用應用程式放置。

    名稱:yarn.resourcemanager.application-tag-based-placement.enable

    值:true

    說明:設定為“true”以根據使用應用程式標籤傳遞的使用者 ID 啟用應用程式放置。當它被啟用時,它會檢查 userid=<userId> 模式,如果找到,應用程式將被放入找到的使用者的佇列中,如果原始使用者對傳遞的使用者佇列具有所需的許可權。


    1. 在許可名單中新增可以使用基於應用程式標籤的展示位置的使用者列表。當提交的使用者包含在許可名單中時,應用程式將被放置到yarn.scheduler.capacity.queue-mappings應用程式標籤中為使用者定義的屬性中定義的佇列中。如果沒有定義使用者,則將使用提交使用者。

    名稱:yarn.resourcemanager.application-tag-based-placement.username.whitelist

    值:

    說明:如果啟用了“yarn.resourcemanager.application-tag-based-placement.enable”,則逗號分隔的使用者列表可以使用基於應用程式標籤的放置。

    1. 重新啟動ResourceManager服務以應用更改。

    配置 NodeManager 心跳

    您可以控制在每個 NodeManager 心跳中可以分配多少個容器。

    要為所有佇列配置 NodeManager 心跳,請執行以下操作:

    1. 在 Cloudera Manager 中,選擇Clusters > YARN Queue Manager UI 服務。圖形佇列層次結構顯示在概覽選項卡中。

    2. 單擊排程程式配置選項卡。

    3. 選中Enable Multiple Assignments Per Heartbeat複選框以允許在一個 NodeManager heartbeat 中進行多個容器分配。

    4. 配置以下 NodeManager 心跳屬性:

    • 每個心跳的最大容器分配- 在一個 NodeManager 心跳中可以分配的最大容器數。將此值設定為 -1 將禁用此限制。

    • 每個心跳的最大關閉開關分配- 在一個 NodeManager 心跳中可以分配的最大關閉開關容器數。

  • 點選儲存。

  • 配置資料本地化

    容量排程器利用延遲排程來滿足任務區域性性約束。區域性約束分為三個級別:節點本地、機架本地和關閉開關。當不能滿足區域性性時,排程器會計算錯過的機會數量,並等待此計數達到閾值,然後再將區域性性約束放寬到下一個級別。您可以使用Node Locality Delay ( yarn.scheduler.capacity.node-locality-delay ) 和Rack Locality Additional Delay ( yarn.scheduler.capacity.rack-locality-additional-delay ) 欄位配置此閾值。

    要配置資料區域性性,請執行以下操作:

    1. 在 Cloudera Manager 中,選擇Clusters > YARN Queue Manager UI 服務。圖形佇列層次結構顯示在概覽選項卡中。

    2. 單擊排程程式配置選項卡。

    3. Node Locality Delay文字框中,輸入可能錯過的排程機會數。

    容量排程程式僅在錯過此數量的機會後才嘗試排程機架本地容器。您必須確保此數量與叢集中的節點數量相同。

    1. Rack Locality Additional Delay文字框中,輸入錯過的排程機會的數量,在 Node Locality Delay 之後,Capacity Scheduler 應嘗試排程關閉開關容器。

    值為 -1 表示根據公式L * C / N計算該值,其中L是資源請求中指定的位置(節點或機架)數量,C是請求的容器數量,N是叢集的大小。

    1. 點選儲存。

    原文連結:https://docs.cloudera.com/cdp-private-cloud-base/latest/yarn-allocate-resources/topics/yarn-configure-scheduler-properties.html



    本文分享自微信公眾號 - 大資料雜貨鋪(bigdataGrocery)。
    如有侵權,請聯絡 [email protected] 刪除。
    本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。