我设法在Yarn上启动了一个spark应用程序。但是,如下所示,emory的使用有点奇怪:
记忆保留是什么意思?如何有效地使用所有可用内存?
提前致谢。
答案 0 :(得分:16)
从Cloudera中查看this blog,解释YARN中的新内存管理。
这里是相关的部分:
...此更改的实现细节可以防止应用程序在这种新的灵活性下挨饿,这是保留容器的概念。想象一下,正在运行两个作业,每个作业都有足够的任务来比整个集群饱和更多。一项工作要求每个映射器获得1GB,另一项工作要求其映射器获得2GB。假设第一个作业启动并填满整个集群。每当其中一个任务完成,它将打开一个1GB的插槽。尽管第二份工作应该占据空间,但是一个天真的政策会将它赋予第一份工作,因为它是唯一适合任务的工作。这可能导致第二份工作无限期地挨饿。 为了防止这种不幸的情况,当节点上的空间被提供给应用程序时,如果应用程序不能立即使用它,它会保留它,并且在满足预留之前,不能在该节点上为其他应用程序分配容器。每个节点可能只有一个保留容器。在ResourceManager UI中报告总预留内存量。数字很大意味着新工作可能需要更长时间才能获得空间。 ,,,
答案 1 :(得分:0)
当容器被分配给某些没有足够资源(CPU或内存)的节点管理器节点时,容器将变为保留状态。