mapreduce.job.maps = MIN(yarn.nodemanager.resource.memory-mb / mapreduce.map.memory.mb,yarn.nodemanager.resource.cpu-vcores / mapreduce.map.cpu.vcores, number of physical drives x workload factor) x number of worker nodes
mapreduce.job.reduces = MIN(yarn.nodemanager.resource.memory-mb / mapreduce.reduce.memory.mb,yarn.nodemanager.resource.cpu-vcores / mapreduce.reduce.cpu.vcores, # of physical drives xworkload factor) x # of worker nodes
对于大多数工作负载,工作负载系数可以设置为 2.0。考虑为 CPU 密集型工作负载设置更高的设置。
yarn.nodemanager.resource.memory-mb( Available Memory on a node for containers )= Total System memory – Reserved memory( like 10-20% of memory for Linux and its daemon services) - HDFS Data node ( 1024 MB) – (resources for task buffers, such as the HDFS Sort I/O buffer) – (Memory allocated for DataNode( default 1024 MB), NodeManager, RegionServer etc.)
Hadoop 在设计上是一个以磁盘 I/O 为中心的平台。专用于 DataNode 使用的独立物理驱动器(“主轴”)的数量限制了节点可以维持多少并发处理。因此,分配给 NodeManager 的 vcore 数量应该是以下两者中的较小者:
[(total vcores) – (number of vcores reserved for non-YARN use)] or [ 2 x (number of physical disks used for DataNode storage)]
所以
yarn.nodemanager.resource.cpu-vcores = min{ ((total vcores) – (number of vcores reserved for non-YARN use)), (2 x (number of physical disks used for DataNode storage))}
Available vcores on a node for containers = total no. of vcores – for operating system( For calculating vcore demand, consider the number of concurrent processes or tasks each service runs as an initial guide. For OS we take 2 ) – Yarn node Manager( Def. is 1) – HDFS data node( Def. is 1).
注意 ==>
mapreduce.map.memory.mb is combination of both mapreduce.map.java.opts.max.heap + some head room (safety value)
mapreduce.[map | reduce].java.opts.max.heap 的设置分别指定分配给 mapper 和 reducer 堆大小的默认内存。
mapreduce.[map| reduce].memory.mb 设置指定为其容器分配的内存,并且分配的值应允许超出任务堆大小的开销。 Cloudera 建议对mapreduce.[map | reduce].java.opts.max.heap 设置应用1.2 的系数。最佳值取决于实际任务。 Cloudera 还建议将 mapreduce.map.memory.mb 设置为 1-2 GB,并将 mapreduce.reduce.memory.mb 设置为映射器值的两倍。 ApplicationMaster 堆大小默认为 1 GB,如果您的作业包含许多并发任务,则可以增加。
参考——