Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Container is running beyond memory limits

In Hadoop v1, I have assigned each 7 mapper and reducer slot with size of 1GB, my mappers & reducers runs fine. My machine has 8G memory, 8 processor. Now with YARN, when run the same application on the same machine, I got container error. By default, I have this settings:

  <property>     <name>yarn.scheduler.minimum-allocation-mb</name>     <value>1024</value>   </property>   <property>     <name>yarn.scheduler.maximum-allocation-mb</name>     <value>8192</value>   </property>   <property>     <name>yarn.nodemanager.resource.memory-mb</name>     <value>8192</value>   </property> 

It gave me error:

Container [pid=28920,containerID=container_1389136889967_0001_01_000121] is running beyond virtual memory limits. Current usage: 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container. 

I then tried to set memory limit in mapred-site.xml:

  <property>     <name>mapreduce.map.memory.mb</name>     <value>4096</value>   </property>   <property>     <name>mapreduce.reduce.memory.mb</name>     <value>4096</value>   </property> 

But still getting error:

Container [pid=26783,containerID=container_1389136889967_0009_01_000002] is running beyond physical memory limits. Current usage: 4.2 GB of 4 GB physical memory used; 5.2 GB of 8.4 GB virtual memory used. Killing container. 

I'm confused why the the map task need this much memory. In my understanding, 1GB of memory is enough for my map/reduce task. Why as I assign more memory to container, the task use more? Is it because each task gets more splits? I feel it's more efficient to decrease the size of container a little bit and create more containers, so that more tasks are running in parallel. The problem is how can I make sure each container won't be assigned more splits than it can handle?

like image 532
Lishu Avatar asked Jan 08 '14 20:01

Lishu


People also ask

What is yarn Nodemanager VMEM Pmem ratio?

yarn.nodemanager.vmem-pmem-ratioDefines a ratio of allowed virtual memory compared to physical memory. This ratio simply defines how much virtual memory a process can use but the actual tracked size is always calculated from a physical memory limit.

How do I disable yarn Nodemanager VMEM check enabled?

Disable virtual memory checks in yarn-site. xml by changing "yarn. nodemanager. vmem-check-enabled" to false.

What is Mapreduce map memory MB?

map. memory. mb is the upper memory limit that Hadoop allows to be allocated to a mapper, in megabytes. The default is 512.


1 Answers

You should also properly configure the maximum memory allocations for MapReduce. From this HortonWorks tutorial:

[...]

Each machine in our cluster has 48 GB of RAM. Some of this RAM should be >reserved for Operating System usage. On each node, we’ll assign 40 GB RAM for >YARN to use and keep 8 GB for the Operating System

For our example cluster, we have the minimum RAM for a Container (yarn.scheduler.minimum-allocation-mb) = 2 GB. We’ll thus assign 4 GB for Map task Containers, and 8 GB for Reduce tasks Containers.

In mapred-site.xml:

mapreduce.map.memory.mb: 4096

mapreduce.reduce.memory.mb: 8192

Each Container will run JVMs for the Map and Reduce tasks. The JVM heap size should be set to lower than the Map and Reduce memory defined above, so that they are within the bounds of the Container memory allocated by YARN.

In mapred-site.xml:

mapreduce.map.java.opts: -Xmx3072m

mapreduce.reduce.java.opts: -Xmx6144m

The above settings configure the upper limit of the physical RAM that Map and Reduce tasks will use.

To sum it up:

  1. In YARN, you should use the mapreduce configs, not the mapred ones. EDIT: This comment is not applicable anymore now that you've edited your question.
  2. What you are configuring is actually how much you want to request, not what is the max to allocate.
  3. The max limits are configured with the java.opts settings listed above.

Finally, you may want to check this other SO question that describes a similar problem (and solution).

like image 155
cabad Avatar answered Oct 04 '22 12:10

cabad