今天用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的mapred-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中更改mapred-site.xml中添加
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>15.5</value>
</property>
标签:更改,mapreduce,hadoop,内存,memory,虚拟内存
From: https://www.cnblogs.com/aluna/p/16923201.html