Mapreduce

Definição – o que significa MapReduce?

MapReduce é um modelo de programação introduzido pelo Google para processar e gerar grandes conjuntos de dados em clusters de computadores.

O Google primeiro formulou a estrutura com o objetivo de servir à indexação de páginas da Web do Google, e a nova estrutura substituiu os algoritmos de indexação anteriores. Os desenvolvedores iniciantes consideram a estrutura MapReduce benéfica porque as rotinas da biblioteca podem ser usadas para criar programas paralelos sem nenhuma preocupação com a comunicação infra-cluster, monitoramento de tarefas ou processos de tratamento de falhas.

O MapReduce é executado em um grande cluster de máquinas comuns e é altamente escalonável. Possui várias formas de implementação fornecidas por múltiplas linguagens de programação, como Java, C # e C ++.

Definirtec explica MapReduce

A estrutura MapReduce tem duas partes:

  1. Uma função chamada “Mapa”, que permite que diferentes pontos do cluster distribuído distribuam seu trabalho
  2. Uma função chamada “Reduzir”, que é projetada para reduzir a forma final dos resultados dos clusters em uma saída

A principal vantagem da estrutura MapReduce é sua tolerância a falhas, em que relatórios periódicos de cada nó do cluster são esperados quando o trabalho for concluído.

Uma tarefa é transferida de um nó para outro. Se o nó mestre perceber que um nó ficou em silêncio por um intervalo maior do que o esperado, o nó principal executará o processo de redesignação para a tarefa congelada / atrasada.

A estrutura MapReduce é inspirada nas funções “Map” e “Reduce” usadas na programação funcional. O processamento computacional ocorre em dados armazenados em um sistema de arquivos ou em um banco de dados, que pega um conjunto de valores de chave de entrada e produz um conjunto de valores de chave de saída.

Todos os dias, vários programas MapReduce e trabalhos MapReduce são executados nos clusters do Google. Os programas são paralelizados automaticamente e executados em um grande cluster de máquinas comuns. O sistema de tempo de execução trata do particionamento dos dados de entrada, agendamento da execução do programa em um conjunto de máquinas, tratamento de falha de máquina e gerenciamento da comunicação necessária entre máquinas. Os programadores sem qualquer experiência com sistemas paralelos e distribuídos podem usar facilmente os recursos de um grande sistema distribuído.

O MapReduce é usado em grep distribuído, classificação distribuída, reversão de link da Web, estatísticas de log de acesso à Web, agrupamento de documentos, aprendizado de máquina e tradução automática de estatísticas.