9

我正在使用 Hadoop 2.0.5 (Alpha) 运行相对较大的作业,并且遇到了以下错误:

容器 [pid=15023,containerID=container_1378641992707_0002_01_000029] 运行超出虚拟内存限制。当前使用情况:已使用 492.4 MB 的1 GB 物理内存;使用了 3.3 GB 的2.1 GB虚拟内存。杀死容器。

然后我了解了这两个参数:

yarn.nodemanager.vmem-pmem-ratio 属性,默认设置为 2.1。

yarn.app.mapreduce.am.command-opts默认设置为 -Xmx1024mb (=1GB)。

这解释了上面标记的限制。

将这些参数设置为更高的值确实有帮助,但后来我发现了这个参数: yarn.app.mapreduce.am.resource.mb,默认设置为 1536。

而且我无法从 Hadoop 的默认 XML 中给出的描述中完全区分这 3 个之间的区别,我也无法正确地设置它们以优化它们。

一个解释或一个很好的参考将不胜感激

4

2 回答 2

13

@twid 的回答模棱两可。根据这里的官方文件:

yarn.app.mapreduce.am.resource.mb指定

“MR AppMaster 需要的内存量。”

换句话说,它指定了用于运行应用程序主控的容器需要多少内存,这与用于运行映射器/减速器的容器无关。

于 2014-02-07T08:29:23.727 回答
4

正如我们所知,Yarn 是管理 hadoop 生态系统中资源的新架构。

yarn.nodemanager.vmem-pmem-ratio 属性:定义虚拟内存与可用物理内存的比率,这里是 2.1 意味着虚拟内存将是物理内存大小的两倍。

yarn.app.mapreduce.am.command-opts:在 yarn ApplicationMaster(AM) 中负责保护必要的资源。所以这个属性定义了运行 AM 本身需要多少内存。不要将此与将执行作业的节点管理器混淆。

yarn.app.mapreduce.am.resource.mb:此属性指定为特定作业选择资源的标准。这里给出 1536 表示任何具有相同或更多可用内存的节点管理器都将被选中来执行作业。

于 2013-09-09T11:13:54.440 回答