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

Jason Lowe commented on MAPREDUCE-4946:
---------------------------------------

Sample stacktrace from one of the many IPC server threads waiting for a lock 
during type-conversion of the map completion events:

{noformat}
"IPC Server handler 9 on 45874" daemon prio=10 tid=0x08f76800 nid=0x1c27 
waiting for monitor entry [0x10583000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at 
org.apache.hadoop.mapreduce.v2.api.records.impl.pb.JobIdPBImpl.getAppId(JobIdPBImpl.java:78)
        - waiting to lock <0x21e729b8> (a 
org.apache.hadoop.mapreduce.v2.api.records.impl.pb.JobIdPBImpl)
        at 
org.apache.hadoop.mapreduce.TypeConverter.fromYarn(TypeConverter.java:65)
        at 
org.apache.hadoop.mapreduce.TypeConverter.fromYarn(TypeConverter.java:119)
        at 
org.apache.hadoop.mapreduce.TypeConverter.fromYarn(TypeConverter.java:211)
        at 
org.apache.hadoop.mapreduce.TypeConverter.fromYarn(TypeConverter.java:185)
        at 
org.apache.hadoop.mapreduce.TypeConverter.fromYarn(TypeConverter.java:178)
        at 
org.apache.hadoop.mapred.TaskAttemptListenerImpl.getMapCompletionEvents(TaskAttemptListenerImpl.java:284)
        at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at 
org.apache.hadoop.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:394)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1530)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1526)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at 
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1221)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1524)
{noformat}
                
> Type conversion of map completion events leads to performance problems with 
> large jobs
> --------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-4946
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-4946
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: mr-am
>    Affects Versions: 2.0.2-alpha, 0.23.5
>            Reporter: Jason Lowe
>            Priority: Critical
>
> We've seen issues with large jobs (e.g.: 13,000 maps and 3,500 reduces) where 
> reducers fail to connect back to the AM after being launched due to 
> connection timeout.  Looking at stack traces of the AM during this time we 
> see a lot of IPC servers stuck waiting for a lock to get the application ID 
> while type converting the map completion events.  What's odd is that normally 
> getting the application ID should be very cheap, but in this case we're 
> type-converting thousands of map completion events for *each* reducer 
> connecting.  That means we end up type-converting the map completion events 
> over 45 million times during the lifetime of the example job (13,000 * 3,500).
> We either need to make the type conversion much cheaper (i.e.: lockless or at 
> least read-write locked) or, even better, store the completion events in a 
> form that does not require type conversion when serving them up to reducers.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to