什么是纱线上保留的内存

时间:2015-02-17 16:42:17

标签: hadoop apache-spark yarn hadoop2

我设法在Yarn上启动了一个spark应用程序。但是,如下所示,emory的使用有点奇怪:

http://imgur.com/1k6VvSI

记忆保留是什么意思?如何有效地使用所有可用内存?

提前致谢。

2 个答案:

答案 0 :(得分:16)

从Cloudera中查看this blog,解释YARN中的新内存管理。

这里是相关的部分:

  

...此更改的实现细节可以防止应用程序在这种新的灵活性下挨饿,这是保留容器的概念。想象一下,正在运行两个作业,每个作业都有足够的任务来比整个集群饱和更多。一项工作要求每个映射器获得1GB,另一项工作要求其映射器获得2GB。假设第一个作业启动并填满整个集群。每当其中一个任务完成,它将打开一个1GB的插槽。尽管第二份工作应该占据空间,但是一个天真的政策会将它赋予第一份工作,因为它是唯一适合任务的工作。这可能导致第二份工作无限期地挨饿。   为了防止这种不幸的情况,当节点上的空间被提供给应用程序时,如果应用程序不能立即使用它,它会保留它,并且在满足预留之前,不能在该节点上为其他应用程序分配容器。每个节点可能只有一个保留容器。在ResourceManager UI中报告总预留内存量。数字很​​大意味着新工作可能需要更长时间才能获得空间。 ,,,

答案 1 :(得分:0)

当容器被分配给某些没有足够资源(CPU或内存)的节点管理器节点时,容器将变为保留状态。