hadoop任务超出虚拟内存限制问题(beyond the 'VIRTUAL' memory limit)

今天用hive跑任务,一个小问题困扰了许久,问题如下:
Container [pid=5284,containerID=container_1669278775243_0001_01_000005] is running 346733056B beyond the 'VIRTUAL' memory limit. Current usage: 284.4 MB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container.
大概意思是超出了虚拟内存限制,
我的机器是4g内存、8g虚拟内存,按理说不应该出现这个问题,由于宿主机有32g内存,
1、我先尝试把虚拟机的内存翻倍至8g,结果还是有这个错误;
2、于是针对linux的虚拟内存进行更改,将虚拟机的虚拟内存从8g调整到16g,发现问题依然没有解决;
3、最后研究出有通过更改配置的方式解决这个错误。

方法一:
调整内存参数
在hadoop的yarn-site.xml文件中更改配置文件:

<property>
  <name>mapreduce.map.memory.mb</name>
  <value>1536</value>
</property>
<property>
  <name>mapreduce.map.java.opts</name>
  <value>-Xmx1024M</value>
</property>
<property>
  <name>mapreduce.reduce.memory.mb</name>
  <value>3072</value>
</property>
<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx2560M</value>
</property>

方法二:
增大hadoop的虚拟内存大小,我通过增加linux的虚拟内存,依然报错,通过在配置文件中更改这个参数后,任务成功跑起来了,猜测hadoop应该是有自己的一套配置,没有直接用宿主机的linux,需要单独配置
在hadoop中更改yarn-site.xml中添加

<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>15.5</value>
</property>
posted @ 2022-11-24 20:31  阿伦啊  阅读(1167)  评论(0编辑  收藏  举报