Reducing locking contention in TaskTracker.MapOutputServlet's LocalDirAllocator
-------------------------------------------------------------------------------

                 Key: MAPREDUCE-1904
                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-1904
             Project: Hadoop Map/Reduce
          Issue Type: Improvement
          Components: tasktracker
    Affects Versions: 0.20.1
            Reporter: Rajesh Balamohan


While profiling tasktracker with Sort benchmark, it was observed that threads 
block on LocalDirAllocator.getLocalPathToRead() in order to get the index file 
and temporary map output file.

As LocalDirAllocator is tied up with ServetContext,  only one instance would be 
available per tasktracker httpserver.  Given the jobid & mapid, 
LocalDirAllocator retrieves index file path and temporary map output file path. 
getLocalPathToRead() is internally synchronized.

Introducing a LRUCache for this lookup reduces the contention heavily (LRUCache 
with key =jobid +mapid and value=PATH to the file). Size of the LRUCache can be 
varied based on the environment and I observed a throughput improvement in the 
order of 4-7% with the introduction of LRUCache.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to