[ 
https://issues.apache.org/jira/browse/MAPREDUCE-4379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13402244#comment-13402244
 ] 

Devaraj K commented on MAPREDUCE-4379:
--------------------------------------

{code:title=ContainerLocalizer.java|borderStyle=solid}
    this.appDirs =
      new LocalDirAllocator(String.format(APPCACHE_CTXT_FMT, appId));
    this.userDirs =
      new LocalDirAllocator(String.format(USERCACHE_CTXT_FMT, appId));
    this.pendingResources = new HashMap<LocalResource,Future<Path>>();
{code}

Here for every application during localization, it creates two 
LocalDirAllocator instances.


{code:title=LocalDirAllocator.java|borderStyle=solid}
  private AllocatorPerContext obtainContext(String contextCfgItemName) {
    synchronized (contexts) {
      AllocatorPerContext l = contexts.get(contextCfgItemName);
      if (l == null) {
        contexts.put(contextCfgItemName, 
                    (l = new AllocatorPerContext(contextCfgItemName)));
      }
      return l;
    }
  }
{code}

 Those two instances will internally creates AllocatorPerContext instances and 
add those into contexts while obtaining contexts. It will keep on adding for 
every application and no where else these are getting removed from the map. It 
is leading to OOM after running for some time.
                
> Node Manager throws java.lang.OutOfMemoryError: Java heap space due to 
> org.apache.hadoop.fs.LocalDirAllocator.contexts
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-4379
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-4379
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: mrv2, nodemanager
>    Affects Versions: 2.0.0-alpha, 3.0.0
>            Reporter: Devaraj K
>            Assignee: Devaraj K
>            Priority: Critical
>
> {code:xml}
> Exception in thread "Container Monitor" java.lang.OutOfMemoryError: Java heap 
> space
>       at java.io.BufferedReader.<init>(BufferedReader.java:80)
>       at java.io.BufferedReader.<init>(BufferedReader.java:91)
>       at 
> org.apache.hadoop.yarn.util.ProcfsBasedProcessTree.constructProcessInfo(ProcfsBasedProcessTree.java:410)
>       at 
> org.apache.hadoop.yarn.util.ProcfsBasedProcessTree.getProcessTree(ProcfsBasedProcessTree.java:171)
>       at 
> org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl$MonitoringThread.run(ContainersMonitorImpl.java:389)
>       Exception in thread "LocalizerRunner for 
> container_1340690914008_10890_01_000003" java.lang.OutOfMemoryError: Java 
> heap space
>       at java.util.Arrays.copyOfRange(Arrays.java:3209)
>       at java.lang.String.<init>(String.java:215)
>       at 
> com.sun.org.apache.xerces.internal.xni.XMLString.toString(XMLString.java:185)
>       at 
> com.sun.org.apache.xerces.internal.parsers.AbstractDOMParser.characters(AbstractDOMParser.java:1188)
>       at 
> com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler.characters(XIncludeHandler.java:1084)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:464)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>       at 
> com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
>       at 
> com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
>       at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180)
>       at 
> org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:1738)
>       at 
> org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:1689)
>       at 
> org.apache.hadoop.conf.Configuration.getProps(Configuration.java:1635)
>       at org.apache.hadoop.conf.Configuration.set(Configuration.java:722)
>       at 
> org.apache.hadoop.conf.Configuration.setStrings(Configuration.java:1300)
>       at 
> org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ContainerLocalizer.initDirs(ContainerLocalizer.java:375)
>       at 
> org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ContainerLocalizer.runLocalization(ContainerLocalizer.java:127)
>       at 
> org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.startLocalizer(DefaultContainerExecutor.java:103)
>       at 
> org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService$LocalizerRunner.run(ResourceLocalizationService.java:862)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to