1、mapred-site.xml
1)mapreduce.map.memory.mb:每个Map Task需要的内存量; 默认值;1024M;map任务的数量=yarn.nodemanager.resource.memory-mb / mapreduce.map.memory.mb
2)mapreduce.reduce.memory.mb:每个Reduce任务需要的内存量; 默认值:1024M;reduce任务的数据=yarn.nodemanager.resource.memory-mb / mapreduce.reduce.memory.mb
3)mapreduce.map.java.ops和mapreduce.reduce.java.opts:这两个参主要是为需要运行JVM程序(java、scala等)准备的,通过这两个设置可以向JVM中传递参数的,与内存有关的是,-Xmx,-Xms等选项。此数值大小,应该在AM中的map.mb和reduce.mb之间
MARK:MapReduce运行中如遇到:xxxis running beyond virtual memory limits。可调整上面几个参数来解决
2、yarn-site.xml
1)yarn.scheduler.minimum-allocation-mb 和 yarn.scheduler.maximum-allocation-mb:单个容器可申请的最小与最大内存,应用在运行申请内存时不能超过最大值,小于最小值则分配最小值,从这个角度看,最小值有点想操作系统中的页。最小值还有另外一种用途,计算一个节点的最大Container数量; 默认值:1024/8192
2)yarn.nodemanager.resource.memory-mb 和 yarn.nodemanager.vmem-pmem-ratio:每个节点可用的最大内存,RM中的两个值不应该超过此值。此数值可以用于计算container最大数目,即:用此值除以RM中的最小容器内存。虚拟内存率,是占task所用内存的百分比,默认值为2.1倍;注意:第一个参数是不可修改的,一旦设置,整个运行过程中不可动态修改,且该值的默认大小是8G,即使计算机内存不足8G也会按着8G内存来使用。 默认值:8G /2.1