`yarn.scheduler.maximum-allocation-mb`和`yarn.nodemanager.resource.memory-mb`之间的区别?

Can*_*ic3 21 hadoop memory-management hdfs hadoop-yarn

yarn.scheduler.maximum-allocation-mb和之间有什么区别yarn.nodemanager.resource.memory-mb

我看到了这两个,yarn-site.xml我在这里看到了解释.

yarn.scheduler.maximum-allocation-mb给出以下定义:RM中每个容器请求的最大分配,以MB为单位.高于此值的内存请求将抛出InvalidResourceRequestException. 这是否意味着仅在资源管理器上的内存请求受此值的限制?

并且yarn.nodemanager.resource.memory-mb给出了可以为容器分配的物理内存量(MB)的定义. 这是否意味着整个集群中所有容器的总量总和在一起?

我还是无法辨别这些.这些解释让我觉得它们是一样的.

更令人困惑的是,它们的默认值完全相同:8192 mb.我如何区分这些?谢谢.

San*_*ngh 42

在您正在设置群集的情况下,请考虑每台计算机具有48 GB的RAM.其中一些RAM应保留给操作系统和其他已安装的应用程序.

yarn.nodemanager.resource.memory-MB:

可以为容器分配的物理内存量(MB).它表示YARN可以在此节点上使用的内存量,因此该属性应该低于该计算机的总内存.

<name>yarn.nodemanager.resource.memory-mb</name>
<value>40960</value> <!-- 40 GB -->
Run Code Online (Sandbox Code Playgroud)

下一步是提供有关如何分解容器中可用资源总量的YARN指南.您可以通过指定要为Container分配的最小RAM单位来执行此操作.

yarn-site.xml

<name>yarn.scheduler.minimum-allocation-mb</name> <!-- RAM-per-container ->
 <value>2048</value>
Run Code Online (Sandbox Code Playgroud)

yarn.scheduler.maximum分配-MB:

它定义了可用于容器的最大内存分配(MB)

这意味着RM只能以增量"yarn.scheduler.minimum-allocation-mb"和不超过的容量为容器分配内存"yarn.scheduler.maximum-allocation-mb",它不应该超过节点的总分配内存.

yarn-site.xml

<name>yarn.scheduler.maximum-allocation-mb</name> <!-Max RAM-per-container->
 <value>8192</value>
Run Code Online (Sandbox Code Playgroud)

对于MapReduce应用程序,YARN处理容器中的每个映射或减少任务,并且在单个机器上可以有多个容器.我们希望每个节点最多允许20个容器,因此需要(40 GB总RAM)/(20#容器)=每个容器最少2 GB由属性控制yarn.scheduler.minimum-allocation-mb

我们再次希望限制由属性控制的容器的最大内存利用率 "yarn.scheduler.maximum-allocation-mb"

例如,如果一个作业每个地图容器(mapreduce.map.memory.mb=2048 set in mapred-site.xml)要求2049 MB内存,则RM将为其提供一个4096 MB(2*yarn.scheduler.minimum-allocation-mb)容器.

如果您有一个巨大的MR作业要求一个9999 MB的地图容器,该作业将被删除并显示错误消息.