O que são sistemas distribuídos e para que servem?
São sistemas que resolvem problemas de computação utilizando diversas máquinas ligadas em rede, formando um cluster. Eles servem para diminuir o tempo na obtenção de uma resposta computacional sem precisar aumentar a velocidade de um processador individualmente.
O que é o modelo MapReduce e como ele ajuda a resolver problemas paralelizáveis?
O modelo MapReduce é uma abstração que cria uma interface entre um programador e um sistema distribuído. Dessa forma, ele faz com que o programador consiga implementar separadamente a solução para seu problema específico e uma solução geral para seu sistema distribuído, a implementação do MapReduce.
Qual é a abstração do modelo MapReduce?
O usuário escreve duas funções: uma map(chave, valor) e uma reduce(chave, valores). Depois, o usuário chama a implementação indicando um conjunto fragmentável ou fragmentado de dados de entrada onde cada fragmento tem o formato (chave, valor).
O que é uma implementação do MapReduce?
É a forma como o sistema distribuído em questão vai executar as funções map e reduce. Sistemas diferentes podem demandar implementações diferentes para um bom funcionamento do MapReduce.
O modelo MapReduce é utilizado na prática com sucesso?
Sim. Empresas como a Google e a Microsoft utilizam o modelo para facilitar o processamento de grandes conjuntos de dados.