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

itz*_*aki 9 hadoop mapreduce hadoop-yarn

我正在使用Hadoop 2.0.5(Alpha)来运行相对较大的工作,我遇到了这些错误:

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

非常感谢解释或好的参考

小智 10

@twid的答案含糊不清.根据这里的官方文件:http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

"yarn.app.mapreduce.am.resource.mb"指定"MR AppMaster需要的内存量",换句话说,它指定用于运行应用程序主机的容器需要多少内存,这不是与用于运行映射器/缩减器的容器相关.


twi*_*wid 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 意味着任何具有相同或更多可用内存的节点管理器将被选择来执行作业。