The MapReduce functional design pattern is used for large-scale parallel-programming. Google developed this functional design pattern to take large tasks and break them up into smaller tasks. These smaller tasks are then run in parallel and produce a consolidated result. The goal of the MapReduce functional design pattern was for performance gains when processing large datasets, also referred to as big data.
Big-data processing and detailed analysis of the MapReduce functional design pattern are complex concepts and are beyond the scope of this chapter. In order to appreciate the MapReduce design pattern, we will briefly cover the following implementation approaches:
- Input-Map-Output
- Input-Map-Reduce-Output
- Input-Multiple Maps-Reduce-Output
- Input-Map-Combiner-Reduce-Output