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

Mariappan Asokan commented on MAPREDUCE-4049:
---------------------------------------------

Hi Avner,
  Please take a look at MAPREDUCE-2454 patch.  There, I wanted to decouple the 
merge from shuffle to make the reduce sort pluggable. However, presumably you 
want to retain that coupling for a reason namely RDMA merge which takes care of 
both shuffle and merge.  We seem to have conflict of interest here:)

In order to resolve this conflict, I have the following suggestion:

We can make the {{ShuffleRunner}} which is defined as below as pluggable:
{code:title=ShuffleRunner.java|borderStyle=solid}
public interface ShuffleRunner extends ExceptionReporter {
  public void run(ShuffleCallback shuffleCallback)
    throws IOException, InterruptedException;
}
{code}
where {{ShuffleCallback}} is defined as:
{code:title=ShuffleCallback.java|borderStyle=solid}
public interface ShuffleCallback {
  public void waitForResource() throws InterruptedException;
  public MapOutput reserve(TaskAttemptID mapId, long shuffleSize, int fetcherId)
    throws IOException;
  public void close() throws Throwable;
}
{code}
With MAPREDUCE-2454 patch, {{MergeManager}} or external sort implementations 
implement {{ShuffleCallback}}.

When {{createShuffleRunner()}} in {{ReduceTask}} is called(see the 
MAPREDUCE-2454 patch), it can return either the default implementation which is 
an instance of  {{Shuffle}} class itself or a plugin implementation.

Now, in order to do the RDMA merge, you can implement {{ShuffleRunner}}, 
{{ShuffleCallback}}, and {{SortPlugin}}.  Your {{ShuffleRunner}} and 
{{ShuffleCallback}} implementations will do nothing.  {{SortPlugin}} will use 
{{DefaultMapSortPlugin}} for map side sort and you provide your 
{{ReduceSortPlugin}} implementation which is going to do the RDMA merge.

How does this sound? I would like to hear from Arun and others on this idea.

Thanks.

-- Asokan

                
> plugin for generic shuffle service
> ----------------------------------
>
>                 Key: MAPREDUCE-4049
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-4049
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: performance, task, tasktracker
>    Affects Versions: 1.0.3, 1.1.0, 2.0.0-alpha, 3.0.0
>            Reporter: Avner BenHanoch
>              Labels: merge, plugin, rdma, shuffle
>         Attachments: HADOOP-1.x.y.patch, Hadoop Shuffle Consumer Plugin 
> TLD.rtf, Hadoop Shuffle Provider Plugin TLD.rtf, mapred-site.xml, 
> mapreduce-4049.patch, mapreduce-4049.patch
>
>
> Support generic shuffle service as set of two plugins: ShuffleProvider & 
> ShuffleConsumer.
> This will satisfy the following needs:
> # Better shuffle and merge performance. For example: we are working on 
> shuffle plugin that performs shuffle over RDMA in fast networks (10gE, 40gE, 
> or Infiniband) instead of using the current HTTP shuffle. Based on the fast 
> RDMA shuffle, the plugin can also utilize a suitable merge approach during 
> the intermediate merges. Hence, getting much better performance.
> # Satisfy MAPREDUCE-3060 - generic shuffle service for avoiding hidden 
> dependency of NodeManager with a specific version of mapreduce shuffle 
> (currently targeted to 0.24.0).
> References:
> # Hadoop Acceleration through Network Levitated Merging, by Prof. Weikuan Yu 
> from Auburn University with others, 
> [http://pasl.eng.auburn.edu/pubs/sc11-netlev.pdf]
> # I am attaching 2 documents with suggested Top Level Design for both plugins 
> (currently, based on 1.0 branch)

--
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