Optimizing MapReduce for Multicore Architectures

Frans Kaashoek, Robert Morris, Yandong Mao

DSpace@MIT (Massachusetts Institute of Technology) · 2010 · 115 citations · 14 references

Full text

Open access

TL;DR

MapReduce, a data‑parallel programming model originally designed for data centers, simplifies parallel programming by hiding synchronization and task management, making it a promising approach for many‑core processors, as demonstrated by competitive performance of libraries such as Phoenix. This study seeks to design efficient data structures for grouping intermediate key/value pairs in MapReduce on multicore processors and to introduce Metis, a library featuring a compromise data structure that performs well across diverse workloads. The authors develop and implement a new compromise data structure for grouping intermediate key/value pairs and provide the Metis library to evaluate its performance on multicore systems. The optimal data structure depends on workload characteristics such as key count and repetition, and experiments on a 16‑core AMD server show that Metis outperforms simpler alternatives, including Phoenix.

Abstract

MapReduce is a programming model for data-parallel programs originally intended for data centers. MapReduce simplifies parallel programming, hiding synchronization and task management. These properties make it a promising programming model for future processors with many cores, and existing MapReduce libraries such as Phoenix have demonstrated that applications written with MapReduce perform competitively with those written with Pthreads [11]. This paper explores the design of the MapReduce data structures for grouping intermediate key/value pairs, which is often a performance bottleneck on multicore processors. The paper finds the best choice depends on workload characteristics, such as the number of keys used by the application, the degree of repetition of keys, etc. This paper also introduces a new MapReduce library, Metis, with a compromise data structure designed to perform well for most workloads. Experiments with the Phoenix benchmarks on a 16-core AMD-based server show that Metis’ data structure performs better than simpler alternatives, including Phoenix.

References

14