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

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

Hi Avner,
  Following are my additional comments and thoughts:

* Does someone need to implement {{ShuffleProviderPlugin}} and 
{{ShuffleConsumerPlugin}} as a pair? Or can one of them be implemented and the 
other be left to the default implementaion?
* For the trunk version, the shuffle provider will probably not require any 
changes.  The shuffle consumer on the other hand has to be separated into two 
parts: one that deals with tansferring map output data  across the network and 
the other that consumes the transferred data.  If you look at the patch I 
posted in MAPREDUCE-2454, the above are abstracted as {{ShuffleRunner}} and 
{{ShuffleCallback}} interfaces respectively.  In the refactored code as part of 
the patch, {{MergeManager}} class implements {{ShuffleCallback}} and 
{{Shuffle}} class implements {{ShuffleRunner}}.  I can probably enhance the 
{{ShuffleRunner}} interface as below with an added {{initialize()}} method 
which basically gets all the arguments that current {{Shuffle}} constructor 
gets:
{code:title=ShuffleRunner.java}
public interface ShuffleRunner extends ExceptionReporter {
  public void initialize(TaskAttemptID reduceId, JobConf jobConf,
                         TaskUmbilicalProtocol umbilical,
                         Reporter reporter,
                         Counters.Counter shuffledMapsCounter,
                         Counters.Counter reduceShuffleBytes,
                         Counters.Counter failedShuffleCounter,
                         TaskStatus status,
                         Progress copyPhase,
                         Task reduceTask);
  public void run(ShuffleCallback shuffleCallback)
    throws IOException, InterruptedException;
}
{code}
* If you want to implement your own merge(using RDMA to get shuffled data as 
described in the technical paper attached to this Jira) you can implement the 
interface {{ReduceSortPlugin}} in addition to {{ShuffleRunner}}.  In the 
{{ReduceSortPlugin}} your merge class can implement {{ShuffleCallback}}.  
Currently, since the merge and shuffle are running in separate threads, the 
synchronization is done by {{waitForResource()}} method in   
{{ShuffleCallback}}.  If you are using RDMA to fetch map outputs, your merge 
will be in full control.  It has to coordinate with your implementation of 
{{ShuffleRunner}} to fetch specific mapper output you want in the merge.

If you have any questions, please let me know.
                
> 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
>            Reporter: Avner BenHanoch
>              Labels: merge, plugin, rdma, shuffle
>         Attachments: HADOOP-1.0.2.patch, HADOOP-1.0.x.patch, 
> HADOOP-1.0.x.patch, Hadoop Shuffle Consumer Plugin TLD.rtf, Hadoop Shuffle 
> Provider Plugin TLD.rtf, MAPREDUCE-4049-branch-1.0.2.patch, mapred-site.xml, 
> mapred.diff, src.tgz, test.diff
>
>
> 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: 
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