Hi Ralph, Welcome!
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 cluster. Would love to collaborate, should we discuss on that jira? thanks, Arun 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 community. > > Thanks > Ralph Castain > >