Hadoop YARN中 VCores used 與 VCores Avail 數量不相符, YARN WebUI中顯示的VCores數不對

1.問題復現

如圖,在yarn-site.xml中我設置的VCores是2個,每個節點提供2GB內存,在mapred-site.xml中設置的每個container是384M。提交了很多任務後,yarn調度器按照 (2GB * 1024)/ 384 = 5 餘 128M ,每個節點申請了5個container,但我設置的VCores只有兩個,怎麼能有這麼多container呢?

 2.分析

是不是有什麼參數沒有限制住VCores的變化,去官方文檔中yarn-site.xml和mapred-site.xml中找關於VCore的參數,沒有找有關這個問題的。最後發現這個問題是在capacity的配置文件中設置的,如下:

yarn.scheduler.capacity.resource-calculator

The ResourceCalculator implementation to be used to compare Resources in the scheduler. The default i.e. org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator only uses Memory while DominantResourceCalculator uses Dominant-resource to compare multi-dimensional resources such as Memory, CPU etc. A Java ResourceCalculator class name is expected.

DefaultResourceCalculator它在申請Container時其實只會考慮內存而不考慮VCores,DominantResourceCalculator考慮多維資源例如內存和CPU,也就是它會考慮所設置的VCore的數量。

 3.解決

在capacity-scheduler.xml中修改

將 org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator

修改爲:org.apache.hadoop.yarn.util.resource.DominantResourceCalculator

修改後:因爲每個節點只有兩個VCore,剩餘了很多內存資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章