MapReduce é um modelo de programação que foi desenhado para processar grandes volumes de dados em paralelo, dividindo o trabalho em um conjunto de tarefas independentes. Programas MapReduce são escritos em um determinado estilo influenciado por construções de programação funcionais, especificamente expressões idiomáticas para listas de processamento de dados.
A idéia de MapReduce é representar qualquer tipo de dados através de uma chave e uma valor. A função Map, recorre os dados disponíveis para processamento e gera um conjunto de chaves e valor. Já a função Reduce reúne todas as chaves iguais e soma os valores.
Programas escritos através do paradigma MapReduce, são automaticamente paralelizados e executados em grandes servidores compostos por várias máquinas. O coração de MapReduce cuida de detalhes como particionamento dos dados de entrada, agendamento dos programas e lida com eventuais falhos. Isso permitiu que os programadores com nenhuma experiência em ambientes paralelos e distribuídos facilmente conseguissem fazer uso dos recursos de estes grandes servidores.