Hadoop 2中3个内存参数的区别?

时间:2013-09-09 06:33:06

标签: hadoop mapreduce yarn

我正在使用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,也不能说明如何在优化方法中正确设置它们。

非常感谢解释或好的参考

2 个答案:

答案 0 :(得分:10)

@twid的答案含糊不清。根据官方文件here

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

  

“MR AppMaster需要的内存量。”

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

答案 1 :(得分:4)

我们知道Yarn是管理hadoop生态系统资源的新架构。

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

yarn.app.mapreduce.am.command-opts:在纱线中ApplicationMaster(AM)负责 确保必要的资源。因此,此属性定义运行AM本身所需的内存量。不要将此与nodemanager混淆,后者将执行作业。

yarn.app.mapreduce.am.resource.mb: 此属性指定为特定作业选择资源的条件。这里给出了1536表示任何具有相同或更多可用内存的nodemanager将被选中用于执行作业。