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。我如何区分这些?谢谢。
答案 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的地图容器,则该作业将被错误消息杀死。