yarn計算一個節點容量及其配置項


mapred-site.xml

mapreduce.map.memory.mb    1536     每個Map Container的大小

mapreduce.reduce.memory.mb  2560      每個Reduce Container的大小         

mapreduce.map.java.opts    -Xmx1024   Map任務的jvm-Xmx堆大小。
                         //
實際Map函數占用的jvm堆大小
mapreduce.reduce.java.opts  -Xmx2048    Reduce任務的jvm-Xmx堆大小。
                         //
實際Reduce函數占用的jvm堆大小
 
        
  •  每個container是動態分配的

mapreduce.map.memory.mb和mapreduce.map.java.opts之間有512MB的差值,這是container留的內存余地,可以用來運行JVM Perm Gen、Native Lib。

所以mapreduce.map.java.opts的值一定要小於mapreduce.map.memory.mb的值。

理解mapreduce.map.java.opts、mapreduce.reduce.java.opts
以map任務為例,Container其實就是在執行一個腳本文件,而腳本文件中,會執行一個 Java 的子進程,這個子進程就是真正的 Map Task,mapreduce.map.java.opts 其實就是啟動 JVM 虛擬機時,傳遞給虛擬機的啟動參數,而默認值 -Xmx200m 表示這個 Java 程序可以使用的最大堆內存數,一旦超過這個大小,JVM 就會拋出 Out of Memory 異常,並終止進程。而 mapreduce.map.memory.mb 設置的是 Container 的內存上限,這個參數由 NodeManager 讀取並進行控制,當 Container 的內存大小超過了這個參數值,NodeManager 會負責 kill 掉 Container。在后面分析 yarn.nodemanager.vmem-pmem-ratio 這個參數的時候,會講解 NodeManager 監控 Container 內存(包括虛擬內存和物理內存)及 kill 掉 Container 的過程。
也就是說,mapreduce.map.java.opts一定要小於mapreduce.map.memory.mb 
mapreduce.reduce.java.opts同mapreduce.map.java.opts一樣的道理。

 這兩個參數,差值太大太小都可能回有問題:

mapreduce.{map,reduce}.memory.mb和 mapreduce.{map,reduce}.java.opts,一旦設置不合理,則會使得內存資源浪費嚴重,比如將前者設置為4096MB,但后者卻是“-Xmx2g”,則剩余2g實際上無法讓java heap使用到。參見
https://issues.apache.org/jira/browse/MAPREDUCE-5785

yarn-site.xml

yarn.scheduler.minimum-allocation-mb  512  YARN允許的最小Container
                          //
AppMaster也會獨占一個Container
yarn.scheduler.maximum-allocation-mb  4096  YARN允許的最大Container 

yarn.nodemanager.resource.memory-mb  36864  節點上資源的總物理內存值。
//這個值不要配置為節點總RAM,還要為其他Hadoop服務如Hbase等留內存

yarn.nodemanager.vmen-pmen-ratio    2.1   每個Container允許的虛擬內存比例。

 yarn提供了非常通用的應用資源模型。

  • 資源名稱(主機名稱、機架名稱、以及可能的復雜網絡拓撲)
  • 內存量
  • CPU(核數/類型)
  • 其他資源,如disk/network I/O、GPU等資源。

yarn權威指南上介紹hadoop2.x目前的可以支持CPU和內存兩種資源維度。(hadoop yarn權威指南P33)


免責聲明!

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



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