hadoop运行报错beyond the'VIRTUAL'memory limit. Current usage: 49.8 MB of 1 GB physical memory used;

利用搭建的hadoop集群计算wordcount时出现内存问题:

错误

mapreduce.Job: Task Id : attempt_1652009045286_0001_m_000000_2,
 Status : FAILED
[2022-05-08 19:32:48.836]Container 
[pid=20882,containerID=container_1652009045286_0001_01_000004]
 is running 375372288B beyond the 'VIRTUAL' memory limit. 
Current usage: 49.8 MB of 1 GB physical memory used;
 2.4 GB of 2.1 GB virtual memory used. Killing container.

原因:是机器上运行的container尝试用更多的内存,但是被Nodemanager给中断了,所以需要配置所需内存大小

解决方法:

1、在/opt/module/hadoop-3.1.4/etc/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>2048</value>
</property>
<property>
  <name>mapreduce.reduce.java.opts</name>
  <value>-Xmx2048M</value>
</property>

2、重启yarn进程即可。

在hadoop目录下的sbin中:

stop-yarn.sh
start-yarn.sh