MR | Modelo MapReduce

MapReduce (Big Data)

Modelo MapReduce


Cada problema a ser resolvido através de computação distribuída possui suas peculiaridades. Porém, existem questões que são comuns a todos os problemas de computação distribuída, como abordado anteriormente. Há diversas tentativas de uniformizar a abordagem a esses problemas e uma delas é o modelo MapReduce.

O modelo MapReduce foi proposto pela Google quando notou-se a grande quantidade de soluções específicas implementadas em sistemas distribuídos para trabalhar de diferentes maneiras com diversos tipos de dados. O modelo procura permitir aos usuários programar apenas o problema que se quer resolver, isolando problemas comuns às implementações distribuídas e solucionando essas questões em outra camada. Com isso, o MapReduce procura criar uma abstração que melhore a performance de programas para sistemas distribuídos, utilizando de forma implícita a filosofia do "dividir para conquistar".

Para criar a abstração supracitada, o MapReduce utiliza de conceitos da programação funcional. O usuário deve programar duas funções, map e reduce, que servirão de interface para uma implementação no sistema distribuído que poderá paralelizar a execução dessas funções com tolerância a falhas, balanço de carga ou qualquer outra propriedade que o implementador do sistema distribuído decidir que é importante. As funções map e reduce funcionam da seguinte forma:

  • map(chave, valor): recebe um par de entrada de chave e valor e produz um conjunto intermediário de chaves e valores.
  • reduce(chave, valores): recebe uma entrada chave e um conjunto de valores relacionados àquela chave.

Assim, a implementação do MapReduce recebe um conjunto inicial de pares chave e valor e invoca a função map para cada par. Depois, a implementação cria listas, onde cada uma contém todos os valores intermediários (produzidos quando a função map é invocada) que estão associados à mesma chave intermediária e chama a função reduce para cada chave intermediária e a lista associada àquela chave intermediária.

O modelo MapReduce oferece apenas uma interface entre a implementação de um sistema distribuído e o usuário desse sistema. Por isso, o sucesso do modelo depende de uma construção satisfatória de um sistema distribuído que atenda às expectativas de oferecer uma execução das funções map e reduce. Além disso, ainda devem ser adicionadas propriedades e atividades como tolerância a falhas, sistemas de arquivos, protocolos de comunicação entre processos, entre outras.


Anterior | Topo | Próxima