一、概述
TDH只是预定义了一些参数,如果某些参数需要用到,在预定义参数中又找不到的话,我们可以通过"添加自定义参数”的形式添加我们需要的参数。
二、添加MapReduce参数
2.1 MapReduce常用调节参数
在job执行过程中,如果某个task需要的内存比较大,则需要单独设置
mpreduce.map.memory.mb;
mapreduce.reduce.memory.mb;
mapreduce.map.java.opts;
mapreduce.reduce.java.opts=-Xmx4g
其中,mpreduce.map.memory.mb打算给单个map任务申请内存资源,注意其值不要超过yarn.scheduler.maximum-allocation-mb
而对于mapreduce.map.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-rati