yarn資源管理


在TARN中,資源管理由RescoueceManager和NodeManager共同完成,其中,Resourcemanager中的調度器負責資源分配,而NodeManager則負責資源的供給和隔離。

ResourceManager將某個Nodemanager上資源分配給任務(這就是所謂的資源調度)后,NodeManager需按照要求為任務提供相應的資源,甚至保證這些資源應具有獨占性,為任務運行提供基礎保證,這就是所謂的資源隔離。

 圖解:容器是內存和vcore的抽象概念。容器運行在nm節點

  基於以上考慮,YARN允許用戶配置每、個節點上可用的物理內存資源,注意,這里是“可用的”,因為一個節點上的內存會被若干個服務共享,比如一部分給YARN,一部分給HDFS,一部分給HBase等,YARN配置的只是自己可以使用的,配置參數如下:

(1)yarn.nodemanager.resource.memory-mb 

表示該節點上YARN可使用的物理內存總量,默認是8192MB,注意,如果你的節點內存資源不夠8G,則需要調減小這個值,而YARN不會智能的探測節點的物理內存總量。

上邊這兩個參數是有關聯的,如果yarn.nodemanager.resource.detect-hardware-capabilities 為true並且yarn.nodemanager.resource.memory-mb 為-1,那么

yarn.nodemanager.resource.memory-mb是自動計算,如果不是則yarn.nodemanager.resource.memory-mb=8G(默認)

(2)yarn.scheduler.minimum-allocation-mb 

        單個任務可申請的最少內存,默認時1024M,如果一個任務申請的物理內存量少於該值,則該對應的值減少位這個數

(3)yarn.scheduler.maximum-allocation-mb

         單個任務可申請的最大內存,默認時8192M

(4)yarn.nodemanager.pmem-check-enabled      true

         是否啟動一個線程檢查每個任務正在使用的物理內存量,如果任務超出分配值,直接將他殺掉,默認是True

(5)yarn.nodemanager.vmem-check-enabled     true

         是否啟動一個線程檢查每個任務正在使用的虛擬內存量,如果任務超出分配值,直接將他殺掉,默認是True

(6)yarn.nodemanager.vmem-pmem-ratio           2.1

任務每使用1M的物理內存,最多可使用的虛擬內存量

 

目前的CPU被划分成虛擬CPU(CPU virtual Core),這里的虛擬CPU是YARN自己引入的概念,初衷是,考慮到不同節點的CPU性能可能不同,每個CPU具有的計算能力也是不一樣的,比如某個物理CPU的計算能力可能是另外一個物理CPU的2倍,這時候,你可以通過為第一個物理CPU多配置幾個虛擬CPU彌補這種差異。用戶提交作業的時候,可以指定每個任務需要的虛擬CPU個數。在YARN中,CPU相關配置參數如下:

(7) yarn.nodemanager.resource.cpu-vcores    12 

      表示該節點上YARN可使用的虛擬CPU個數,默認是8,目前推薦將該值設置位與物理CPU核數數目相同。如果物理CPU核數不夠8,則需要調小這個值,而YARN不       會智能的探測物理CPU總數。
(8) yarn.scheduler.minimum-allocation-vcores   1

      單個任務可申請的最小CPU個數,默認是1,如果一個任務申請的CPU個數小於該數,則將該數改為這個數。
(9) yarn.scheduler.maximum-allocation-vcores   4

      單個任務可申請的最大CPU個數,默認是4

 

container: 容器個數的判別標准有兩個維度

 一個是物理內存,一個是CPU

memory 16c~4c
vcores 12c~3c

總結:  yarn的在調優時候要綜合考慮CPU和內存的分配,盡量保證不要空出多余的資源,假如container總內存30,container最小2G,總vcore8 container 最小1c

那么我們內存可以啟動最多15個container,cpu最多啟動8個container,最終可以啟動8個container,會有相當多的內存沒有用到。所以生產上的調優配置需要綜合考量內存和 CPU的配比。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM