在网上查到该报错说是设置的虚拟内存不够引起的。
报错
Current usage: 360.4 MB of 1 GB physical memory used; 2.4 GB of 2.1 GB
virtual memory used. Killing container.
解释
意思是说container使用的虚拟内存超过了设置的2.1G
那么,问题来了,这个虚拟内存的数量从那儿来的呢?
是从yarn-site.xml中配置计算来的(这个文件在hadoop安装目录下的etc/hadoop文件夹中),与这个问题有关的属性和说明如下:
属性 | 默认值 | 解释 | 类型 |
---|---|---|---|
yarn.scheduler.minimum-allocation-mb | 1024 | 分配给AM单个容器可申请的最小内存,默认1024M | RM属性 |
yarn.scheduler.maximum-allocation-mb | 8192 | 分配给AM单个容器可申请的最大内存,默认8192M,不能超过NM节点最大可用内存 | RM属性 |
yarn.nodemanager.resource.memory-mb | 8192 | NM节点最大可用内存,默认8192M | NM属性 |
yarn.nodemanager.vmem-check-enabled | true | 是否检查虚拟内存,默认true检查 | <