Yarn的資源調優


一、概述

 每個job提交到yarn上執行時,都會分配Container容器去運行,而這個容器需要資源才能運行,這個資源就是Cpu和內存。

1、CPU資源調度

  目前的CPU被Yarn划分為虛擬CPU,這是yarn自己引入的概念,因為每個服務器的Cpu計算能力不一樣,有的機器可能是 其他機器的計算能力的2倍,然后可以通過多配置幾個虛擬內存彌補差異。在yarn中,cpu的相關配置如下。

  • yarn.nodemanager.resource.cpu-vcores

   表示該節點服務器上yarn可以使用的虛擬的CPU個數,默認是8,推薦配置與核心個數相同,如果節點CPU的核心個數不足8個,需要調小這個值,yarn不會智能的去檢測物理核數。如果機器性能較好,可以配置為物理核數的2倍。

  • yarn.scheduler.minimum-allocation-vcores

  表示單個任務最小可以申請的虛擬核心數,默認為1

  • yarn.sheduler.maximum-allocation-vcores

  表示單個任務最大可以申請的虛擬核數,默認為4;如果申請資源時,超過這個配置,會拋出 InvalidResourceRequestException

2、Memory資源調度

 yarn一般允許用戶配置每個節點上可用的物理資源,可用指的是將機器上內存減去hdfs的,hbase的等等剩下的可用的內存。

  • yarn.nodemanager.resource.memory-mb

  設置該節點上yarn可使用的內存,默認為8G,如果節點內存不足8G,要減少這個值,yarn不會智能的去檢測內存資源,一般這個值式yarn的可用內存資源。

  • yarn.scheduler.minmum-allocation-mb

  單個任務最小申請物理內存量,默認是1024M,根據自己業務設定

  • yarn.scheduler.maximum-allocation-mb

  單個任務最大可以申請的物理內存量,默認為8291M

 二、如果設置這幾個參數

  如果一個服務器是32核,虛擬后為64核,128G內存,我們該如何設置上面的6個參數呢?即如何做到資源最大化利用

生產上我們一般要預留15-20%的內存,那么可用內存就是128*0.8=102.4G,去除其他組件的使用,我們設置成90G就可以了。

    1、yarn.sheduler.maximum-allocation-vcores

   一般就設置成4個,cloudera公司做過性能測試,如果CPU大於等於5之后,CPU的利用率反而不是很好。這個參數可以根據生成服務器決定,比如公司服務器很富裕,那就直接設置成1:1;設置成32,如果不是很富裕,可以直接設置成1:2。我們以1:2來計算。

    2、yarn.scheduler.minimum-allocation-vcores

   如果設置vcoure = 1,那么最大可以跑64/1=64個container,如果設置成這樣,最小container是64/4=16個。

   3、yarn.scheduler.minmum-allocation-mb

   如果設置成2G,那么90/2=45最多可以跑45個container,如果設置成4G,那么最多可以跑24個;vcore有些浪費。

  4、yarn.scheduler.maximum-allocation-mb

  這個要根據自己公司的業務設定,如果有大任務,需要5-6G內存,那就設置為8G,那么最大可以跑11個container。


免責聲明!

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



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