须知
1. 虚拟内存
相对于物理内存的概念,虚拟内存可以设置的比物理内存大,mapreduce.map.memory.mb设置的是物理内存。yarn.nodemanager.vmem-pmem-ratio是虚拟和物理内存的ratio,默认2.1。如果container分配的内存超过虚拟内存,会报
Current usage: 2.1gb of 2.0gb physical memory used; 1.6gb of 3.15gb virtual memory used. Killing container.
增大虚拟内存,可以增大物理内存或者增加比值。一般生产上的内存都是够的,把mapreduce.map.memory.mb和mapreduce.reduce.memory.mb调大即可。默认为0,表示会根据最大堆大小 和 堆与容器的比值 设置 需要的物理内存。如果没有指定最大堆大小,则物理内存量默认设置为1G。这在生产上的肯定不够的。