我正在使用 Hadoop 2.0.5 (Alpha) 运行相对较大的作业,我遇到了这些错误:
Container [pid=15023,containerID=container_1378641992707_0002_01_000029] is running beyond virtual memory limits. Current usage: 492.4 MB of 1 GB physical memory used; 3.3 GB of 2.1 GB virtual memory used. Killing container.
然后我了解了这两个参数:
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 个之间的区别,也无法以优化的方式正确设置它们。
一个解释或一个很好的引用将不胜感激
最佳答案
@twid 的回答是模棱两可的。根据官方文档here :
yarn.app.mapreduce.am.resource.mb
指定
"The amount of memory the MR AppMaster needs."
换句话说,它指定了用于运行application master的容器需要多少内存,这与用于运行mappers/reducers的容器无关。
关于hadoop - Hadoop 2 中 3 个内存参数之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18692631/