hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Arun C Murthy <...@hortonworks.com>
Subject Re: Hadoop + MPI
Date Mon, 21 Nov 2011 23:43:03 GMT
Hi Ralph,


 We'd absolutely love to have OpenMPI integrated with Hadoop!

 In fact, there already has been a bunch of discussions running OpenMPI on what we call MR2
(aka YARN), documented here: https://issues.apache.org/jira/browse/MAPREDUCE-2911.

 YARN is our effort to re-imagine Hadoop MapReduce as a general purpose, distributed, data
processing system to support MapReduce, MPI and other programming paradigms on the same Hadoop

 Would love to collaborate, should we discuss on that jira?


On Nov 21, 2011, at 3:35 PM, Ralph Castain wrote:

> Hi folks
> I am a lead developer in the Open MPI community, mostly focused on integrating that package
with various environments. Over the last few months, I've had a couple of people ask me about
MPI support within Hadoop - i.e., they want to run MPI applications under the Hadoop umbrella.
I've spent a little time studying Hadoop, and it would seem a good fit for such a capability.
> I'm willing to do the integration work, but wanted to check first to see if (a) someone
in the Hadoop community is already doing so, and (b) if you would be interested in seeing
such a capability and willing to accept the code contribution?
> Establishing MPI support requires the following steps:
> 1. wireup support. MPI processes need to exchange endpoint info (e.g., for TCP connections,
IP address and port) so that each process knows how to connect to any other process in the
application. This is typically done in a collective "modex" operation. There are several ways
of doing it - if we proceed, I will outline those in a separate email to solicit your input
on the most desirable approach to use.
> 2. binding support. One can achieve significant performance improvements by binding processes
to specific cores, sockets, and/or NUMA regions (regardless of using MPI or not, but certainly
important for MPI applications). This requires not only the binding code, but some logic to
ensure that one doesn't "overload" specific resources.
> 3. process mapping. I haven't verified it yet, but I suspect that Hadoop provides each
executing instance with an identifier that is unique within that job - e.g., we typically
assign an integer "rank" that ranges from 0 to the number of instances being executed. This
identifier is critical for MPI applications, and the relative placement of processes within
a job often dictates overall performance. Thus, we would provide a mapping capability that
allows users to specify patterns of process placement for their job - e.g., "place one process
on each socket on every node".
> I have written the code to implement the above support on a number of systems, and don't
foresee major problems doing it for Hadoop (though I would welcome a chance to get a brief
walk-thru the code from someone). Please let me know if this would be of interest to the Hadoop
> Thanks
> Ralph Castain

View raw message