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.