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

tuwxkamq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(601)

两者有什么区别 yarn.scheduler.maximum-allocation-mb 以及 yarn.nodemanager.resource.memory-mb ?
这两个我都看到了 yarn-site.xml 我在这里看到了解释。 yarn.scheduler.maximum-allocation-mb 给出了以下定义:rm上每个容器请求的最大分配(MB)。高于此值的内存请求将引发invalidresourcerequestexception。这是否意味着仅在resourcemanager上的内存请求受此值限制?
以及 yarn.nodemanager.resource.memory-mb 给出了可分配给容器的物理内存量(mb)的定义。这是否意味着整个集群中所有容器的总量相加?
然而,我仍然无法分辨这两者之间的区别。这些解释使我认为它们是一样的。
更令人困惑的是,它们的默认值完全相同:8192MB。我怎么区分这两个呢?谢谢您。

zpgglvta

zpgglvta1#

考虑这样一个场景:您正在设置一个集群,其中每台计算机都有48gb的ram。一些ram应该保留给操作系统和其他已安装的应用程序。
yarn.nodemanager.resource.memory-mb:
可分配给容器的物理内存量(mb)。这意味着此节点上可以使用的内存量,因此此属性应低于该机器的总内存。

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

下一步是就如何将可用的总资源分解到容器中提供指导。为此,您可以指定要为容器分配的最小ram单位。
yarn-site.xml ```
yarn.scheduler.minimum-allocation-mb <!-- RAM-per-container ->
2048

yarn.scheduler.maximum-allocation-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在一个容器中处理每个map或reduce任务,在一台机器上可以有多个容器。我们希望在每个节点上最多允许20个容器,因此每个由属性控制的容器至少需要(40 gb总ram)/(20#个容器)=2 gb yarn.scheduler.minimum-allocation-mb 同样,我们要限制由属性控制的容器的最大内存利用率 "yarn.scheduler.maximum-allocation-mb" 例如,如果一个作业要求每个Map容器有2049 mb内存( mapreduce.map.memory.mb=2048 set in mapred-site.xml ),rm将为其提供4096 mb( 2*yarn.scheduler.minimum-allocation-mb )容器。
如果有一个巨大的mr作业需要一个9999mb的Map容器,那么该作业将被终止,并显示错误消息。

相关问题