两者有什么区别 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。我怎么区分这两个呢?谢谢您。
1条答案
按热度按时间zpgglvta1#
考虑这样一个场景:您正在设置一个集群,其中每台计算机都有48gb的ram。一些ram应该保留给操作系统和其他已安装的应用程序。
yarn.nodemanager.resource.memory-mb:
可分配给容器的物理内存量(mb)。这意味着此节点上可以使用的内存量,因此此属性应低于该机器的总内存。
下一步是就如何将可用的总资源分解到容器中提供指导。为此,您可以指定要为容器分配的最小ram单位。
在
yarn-site.xml
```yarn.scheduler.minimum-allocation-mb <!-- RAM-per-container ->
2048
对于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容器,那么该作业将被终止,并显示错误消息。