Yarn下的mapper和reducer并发执行个数有什么决定的呢?
由调度的资源决定的,也就是说启动的YarnChild个数多少取决于资源的分配和free的资源量
参数说明:
conf/yarn-site.xml
yarn.nodemanager.resource.memory-mb
NodeManager总的可用物理内存,默认值是8192MB,一般情况下不要修改
yarn.nodemanager.vmem-pmem-ratio
每使用1MB物理内存,最多可用的虚拟内存数默认2.1
yarn.nodemanager.resource.cpu-vcores
参数解释:NodeManager总的可用虚拟CPU个数。默认值:8
conf/mapred-site.xml:
mapreduce.map.memory.mb
每个Map Task需要的内存量默认1024m
mapreduce.map.java.opts
map的最大累计内存如:-Xmx1024M
mapreduce.reduce.memory.mb
每个Reduce Task需要的内存量默认1024m
mapreduce.reduce.java.opts
所有reduce加起来的总和内存大小如:-Xmx1024M
yarn.scheduler.minimum-allocation-mb
默认值:1024
yarn.scheduler.maximum-allocation-mb
默认值:8192
拆分说明如下:
Container for task
memory:
单位:mb
默认值:1024
首选"mapreduce.map|reduce.memory.mb" 默认值:0
其次
获取-Xmx配置的heapsize
配置项首选 "mapreduce.map|reduce.java.opts"
其次 "mapred.child.java.opts" 默认值:-Xmx200m
xmx浮动
浮动比例:"mapreduce.xmx.overflow.memory.percent" 默认值:0.1
浮动量:"mapreduce.xmx.overflow.memory.mb" 默认值:128
综合:xmx = ceil(xmx * (1 + 0.1) + 128 * 1.0) 即默认200*1.1 + 128 = 348
cpu
单位:vcore
默认值:1
配置项:"mapreduce.map|reduce.cpu.vcores"
Container for appmaster
memory
单位:mb
默认值:1536
配置项:"yarn.app.mapreduce.am.resource.mb"
cpu
单位:vcore
默认值:1
配置项:"yarn.app.mapreduce.am.resource.cpu-vcores"
调度器控制
memory
单位:mb
申请最小值:"yarn.scheduler.minimum-allocation-mb" 默认值:1024
申请最大值:"yarn.scheduler.maximum-allocation-mb" 默认值:8192
cpu
单位:vcore
申请最小值:"yarn.scheduler.minimum-allocation-vcores" 默认值:1
申请最大值:"yarn.scheduler.maximum-allocation-vcores" 默认值:4