Processando a Massa de Dados

O MapReduce consiste basicamente em três partes. Na primeira, que é a configuração (setup), uma das cópias do programa é separada e chamada de Mestre, enquanto as outras são chamadas de trabalhadores (workers), que serão atribuídos uma entre duas categorias: Redução (Reduce) ou ao Mapeamento (Map). Durante o início do Map, a informação a ser processada é subdividida em diversas partes que são enviadas a um aglomerado de computadores (cluster).

Com a informação já em várias máquinas diferentes, o Mapeamento começa a executar uma função pré-determinada sobre cada uma das partes que foram enviadas. Dessa forma, a função roda de forma independente em arquivos menores e em cada um deles, vários trabalhadores de Mapeamento, o que diminui o tempo necessário para a execução do programa. Nesse momento, surge a necessidade do Reduce. Como os arquivos estão espalhados em diversos locais, se faz necessário reunir todos esses dados em uma única máquina. Os trabalhadores responsáveis por ele recebem uma notificação do nó Mestre sobre a localização de cada uma das partes dos dados processados e reúne toda a informação de modo a formar o arquivo de saída.

Desse modo, são criadas facilidades no que se refere a programação, uma vez que o programador não precisa se preocupar em paralelizar seu código, já que todo o trabalho se reduz a fazer sua função e passá-la como parâmetro ao MapReduce. Além disso, uma vantagem num contexto de aplicações mais robustas envolve um tratamento de erros em que o Mestre periodicamente manda um ping aos trabalhadores e, dado um tempo limite, aquele trabalhador pode ser descartado e seu trabalho reenviado a outro trabalhador. Assim, aplicações feitas com o MapReduce permitem um isolamento de uma camada, o que tanto facilita a programação como também permite o processamento de uma quantidade de informações antes inviável.