MapReduce - Introdução

MapReduce é um modelo de programação para escrever aplicativos que podem processar Big Data em paralelo em vários nós. MapReduce fornece recursos analíticos para analisar grandes volumes de dados complexos.

O que é Big Data?

Big Data é uma coleção de grandes conjuntos de dados que não podem ser processados ​​usando técnicas tradicionais de computação. Por exemplo, o volume de dados de que o Facebook ou o Youtube precisam para coletar e gerenciar diariamente pode se enquadrar na categoria de Big Data. No entanto, Big Data não se trata apenas de escala e volume, ele também envolve um ou mais dos seguintes aspectos - Velocidade, Variedade, Volume e Complexidade.

Por que MapReduce?

Os sistemas corporativos tradicionais normalmente possuem um servidor centralizado para armazenar e processar dados. A ilustração a seguir descreve uma visão esquemática de um sistema empresarial tradicional. O modelo tradicional certamente não é adequado para processar grandes volumes de dados escalonáveis ​​e não pode ser acomodado por servidores de banco de dados padrão. Além disso, o sistema centralizado cria um grande gargalo ao processar vários arquivos simultaneamente.

O Google resolveu esse problema de gargalo usando um algoritmo chamado MapReduce. O MapReduce divide uma tarefa em pequenas partes e as atribui a vários computadores. Posteriormente, os resultados são coletados em um local e integrados para formar o conjunto de dados de resultados.

Como funciona o MapReduce?

O algoritmo MapReduce contém duas tarefas importantes, ou seja, Mapear e Reduzir.

  • A tarefa Map pega um conjunto de dados e o converte em outro conjunto de dados, onde os elementos individuais são divididos em tuplas (pares chave-valor).

  • A tarefa Reduce pega a saída do Map como uma entrada e combina essas tuplas de dados (pares de valor-chave) em um conjunto menor de tuplas.

A tarefa de redução é sempre executada após o trabalho de mapa.

Vamos agora dar uma olhada em cada uma das fases e tentar entender seu significado.

  • Input Phase - Aqui temos um leitor de registro que traduz cada registro em um arquivo de entrada e envia os dados analisados ​​para o mapeador na forma de pares chave-valor.

  • Map - Map é uma função definida pelo usuário, que pega uma série de pares de valores-chave e processa cada um deles para gerar zero ou mais pares de valores-chave.

  • Intermediate Keys - Os pares de valor-chave gerados pelo mapeador são conhecidos como chaves intermediárias.

  • Combiner- Um combinador é um tipo de Redutor local que agrupa dados semelhantes da fase do mapa em conjuntos identificáveis. Ele pega as chaves intermediárias do mapeador como entrada e aplica um código definido pelo usuário para agregar os valores em um pequeno escopo de um mapeador. Não faz parte do algoritmo MapReduce principal; é opcional.

  • Shuffle and Sort- A tarefa do redutor começa com a etapa de ordem aleatória. Ele baixa os pares de valores-chave agrupados na máquina local, onde o Redutor está sendo executado. Os pares de valores-chave individuais são classificados por chave em uma lista de dados maior. A lista de dados agrupa as chaves equivalentes para que seus valores possam ser iterados facilmente na tarefa do Redutor.

  • Reducer- O Redutor leva os dados emparelhados de valores-chave agrupados como entrada e executa uma função Redutor em cada um deles. Aqui, os dados podem ser agregados, filtrados e combinados de várias maneiras e requer uma ampla variedade de processamento. Depois que a execução termina, ele fornece zero ou mais pares de valores-chave para a etapa final.

  • Output Phase - Na fase de saída, temos um formatador de saída que traduz os pares de valores-chave finais da função Redutor e os grava em um arquivo usando um gravador.

Vamos tentar entender as duas tarefas Map & f Reduce com a ajuda de um pequeno diagrama -

MapReduce-Example

Vamos dar um exemplo do mundo real para compreender o poder do MapReduce. O Twitter recebe cerca de 500 milhões de tuítes por dia, o que significa quase 3.000 tuítes por segundo. A ilustração a seguir mostra como o Tweeter gerencia seus tweets com a ajuda do MapReduce.

Conforme mostrado na ilustração, o algoritmo MapReduce executa as seguintes ações -

  • Tokenize - Tokeniza os tweets em mapas de tokens e os grava como pares de valor-chave.

  • Filter - Filtra palavras indesejadas dos mapas de tokens e grava os mapas filtrados como pares de valores-chave.

  • Count - Gera um contador de tokens por palavra.

  • Aggregate Counters - Prepara um agregado de valores de contador semelhantes em pequenas unidades gerenciáveis.