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

时间:2017-05-07 00:36:38

标签: hadoop memory-management hdfs yarn

document.getElementsByTagName("head")[0].appendChild(link);yarn.scheduler.maximum-allocation-mb之间有什么区别?

我在yarn.nodemanager.resource.memory-mb中看到了这两个问题,我看到了解释here

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

并且yarn.scheduler.maximum-allocation-mb定义了可以为容器分配的物理内存量(MB)。这是否意味着整个群集中所有容器的总量,总计一起?

但是,我仍然无法辨别这些。这些解释让我觉得它们是一样的。

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

1 个答案:

答案 0 :(得分:32)

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

<强> yarn.nodemanager.resource.memory-MB:

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

<name>yarn.nodemanager.resource.memory-mb</name>
<value>40960</value> <!-- 40 GB -->

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

yarn-site.xml

<name>yarn.scheduler.minimum-allocation-mb</name> <!-- RAM-per-container ->
 <value>2048</value>

<强> 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>

对于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的地图容器,则该作业将被错误消息杀死。