天天看點

[Yarn基礎]-- Yarn資源配置設定

背景

在 2018年 11月的某一天,我發現 spark-submit 設定的資源參數未生效( –executor-cores 10),仔細排查後定位是Yarn 的配置設定政策使用有誤,由于我們叢集是使用 Ambari 安裝的,未修改Yarn預設的配置設定政策(org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator),是以導緻 叢集的 cpu 沒有充分利用,每個 Container 隻會配置設定 1core ,而Memory 則被榨幹。

解決方法:修改配置設定政策為—> org.apache.hadoop.yarn.util.resource. DominantResourceCalculator

Yarn 的配置設定政策

我們可以使用YARN中的Capacity Scheduler來管理群集容量。然後使用Capacity Scheduler DefaultResourceCalculator 或 DominantResourceCalculator 配置設定可用資源。

YARN中的基本排程單元是隊列。每個隊列的容量指定可用于送出到隊列的應用程式的群集資源的百分比。

那麼可以在層次結構中設定隊列,以反映使用群集資源的組織,group 和個人所需的資料庫結構,資源要求和通路限制。

  1. 如果你希望資源計算僅考慮用于資源計算的可用記憶體,則可以使用 DefaultResourceCalculator。使用 DefaultResourceCalculator 時,将根據可用記憶體配置設定資源,而不會考慮 使用者顯示指定的 cpu core 數量。
  2. 如果你有多種資源類型,則使用 DominantResourceCalculator 來啟用CPU,GPU和 Memory scheduler。主導資源電腦基于資源配置設定的Dominant Resource Fairness(DRF)模型。DRF旨在在混合工作負載叢集中的不同類型的程序之間公平地配置設定CPU,GPU和記憶體資源。

舉例

使用者A運作 CPU 繁重的任務:DRF會為使用者A運作的任務配置設定更多的CPU和更少的記憶體

使用者B運作 記憶體繁重的任務:DRF會為使用者B運作的任務配置設定更少的CPU和更多的記憶體

在單個資源情況下,所有作業都請求相同的資源,DRF會降低該資源的最大最小公平性,也就是說叢集資源有限的情況下,DRF 會按照排程政策配置設定。

Yarn 排程政策

YARN(MRv2)和MapReduce(MRv1)計算架構支援以下排程程式:

  1. FIFO - 根據到達時間的先後順序配置設定資源。
  2. Fair Scheduler - 将資源配置設定給權重池,每個池内都有公平共享。在配置池的排程政策時,域資源公平性(DRF)是一種公平排程器。
  3. Capacity - 通過每個池中的FIFO排程為池配置設定資源。

YARN和MapReduce的排程程式預設值為:

名稱/廠商 Cloudera Hortonworks
Yarn

CDH 5和CDH 4将預設設定為Fair Scheduler;

但是Cloudera推薦Fair Scheduler

預設為 FIFO ;

資源配置設定使用 Capacity Scheduler’s DefaultResourceCalculator

MapReducer

CDH 5和CDH 4将預設設定為Fair Scheduler。

但是Cloudera推薦Fair Scheduler

讨論

  1. 資源配置設定政策

    org.apache.hadoop.yarn.util.resource. DominantResourceCalculator

  2. 修改java參數

    ApplicationMaster 記憶體(yarn.app.mapreduce.am.resource.mb) > ApplicationMaster Java 最大堆棧

  3. 修改nodemanager的目錄

    保證目錄名稱一緻、不要将小盤目錄添加到 nm 上

  4. 修改允許連結申請資源的使用者

    有 Kerberos 認證時,需要考慮這個問題

參考

  • ​​https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.1.0/data-operating-system/content/about_yarn_resource_allocation.html​​
  • ​​https://www.cloudera.com/documentation/enterprise/5-11-x/topics/admin_schedulers.html​​
  • ​​https://www.cloudera.com/documentation/enterprise/5-11-x/topics/cdh_ig_yarn_tuning.html​​
  • ​​https://archive.cloudera.com/cdh5/cdh/5/hadoop/hadoop-yarn/hadoop-yarn-site/FairScheduler.html​​
  • ​​https://archive.cloudera.com/cdh5/cdh/5/hadoop/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html​​

繼續閱讀