1. 内存相关参数
参数 | 说明 | 默认值 |
yarn.nodemanager.resource.memory-mb | 该nm能够分配的内存量 | -1 |
yarn.nodemanager.vmem-pmem-ratio | 虚拟内存率,Container 的虚拟内存大小的限制,每使用1MB物理内存,最多可用的虚拟内存数 | 2.1 |
yarn.nodemanager.pmem-check-enabled | 是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉 | true |
yarn.nodemanager.vmem-check-enabled | 是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉 | true |
mapreduce.map.memory.mb | 分配给map Container的内存大小 | -1 |
mapreduce.reduce.memory.mb | 分配给reduce Container的内存大小 | -1 |
mapreduce.map.java.opts | map启动的jvm参数,如 -Xmx,-Xms 等选项,值要小于mapreduce.map.memory.mb,一般为0.75倍 |
|
mapreduce.reduce.java.opts | reduce启动的jvm参数,如 -Xmx,-Xms 等选项,值要小于mapreduce.reduce.memory.mb,一般为0.75倍 |
|
yarn.scheduler.minimum-allocation-mb | 单个Container最小可申请的资源 | 1024 |
yarn.scheduler.maximum-allocation-mb | 单个Container最大可申请的资源 | 8192 |
yarn.scheduler.increment-allocation-mb | 资源规整化因子,规整化因子是用来规整化应用程序资源的,应用程序申请的资源如果不是该因子的整数倍,则将被修改为最小的整数倍对应的值,公式为ceil(a/b)*b,其中a是应用程序申请的资源,b为规整化因子。 对于规整化因子,不同调度器不同,具体如下: FIFO和Capacity Scheduler,规整化因子等于最小可申请资源量,不可单独配置。 Fair Scheduler:规整化因子通过参数yarn.scheduler.increment-allocation-mb和yarn.scheduler.increment-allocation-vcores设置,默认是1024和1。 |
|
yarn.app.mapreduce.am.resource.mb | mapreduce的am申请的内存 | 1536 |
说明:
yarn.nodemanager.resource.detect-hardware-capabilities默认值是false。
yarn.nodemanager.resource.memory-mb
如果值是-1且yarn.nodemanager.resource.detect-hardware-capabilities值为true,则根据系统内存自动计算,否则默认值为8192。
mapreduce.map.memory.mb在mapreduce.map.java.opts值没设置时,默认值是1024
mapreduce.reduce.memory.mb在mapreduce.reduce.java.opts值没设置时,默认值是1024
yarn.scheduler.increment-allocation-mb该参数后面会被舍弃
经常出现的内存溢出错误如下:
1、Container xxx is running beyond physical memory limits
2、java heap space
3、Error: GC overhead limit exceeded
比如:
报错1:Current usage: 1.1gb of 2.0gb physical memory used; 1.2gb of 1gb virtual memory used. Killing container.【即虚拟内存溢出】;
解决办法:提高yarn.nodemanager.vmem-pmem-ratio = 5或者更高
报错2:Current usage: 2.1gb of 2.0gb physical memory used; 3.6gb of 4.2gb virtual memory used. Killing container.【即物理内存溢出】;
解决办法:是mapreduce任务则提高mapreduce.map.memory.mb的值,到不报错为止,是其他类型的任务,比如spark则提高对应要申请的container内存大小
2. 虚拟cpu相关参数
参数 | 说明 | 默认值 |
yarn.nodemanager.resource.cpu-vcores | 该nm能够分配的cpu数 | -1 |
yarn.scheduler.minimum-allocation-vcores | 单个Container可申请的最小虚拟CPU个数 | 1 |
yarn.scheduler.maximum-allocation-vcores | 单个Container可申请的最大虚拟CPU个数 | 4 |
mapreduce.map.cpu.vcores | map的container申请的虚拟cpu数 | 1 |
说明:
yarn.nodemanager.resource.cpu-vcores
如果值是-1且yarn.nodemanager.resource.detect-hardware-capabilities值为true,则其cpu数目根据系统而定,否则默认值为8。