O que é MapReduce no Hadoop?
MapReduce é uma estrutura de software e modelo de programação usado para processar grandes quantidades de dados. O programa MapReduce funciona em duas fases, a saber, Mapear e Reduzir. As tarefas de mapa lidam com a divisão e mapeamento de dados, enquanto as tarefas de Redução misturam e reduzem os dados.
O Hadoop é capaz de executar programas MapReduce escritos em várias linguagens: Java, Ruby, Python e C ++. Os programas de Map Reduce na computação em nuvem são paralelos por natureza, portanto, são muito úteis para realizar análises de dados em grande escala usando várias máquinas no cluster.
A entrada para cada fase são pares de valores-chave . Além disso, todo programador precisa especificar duas funções: função de mapa e função de redução .
Neste tutorial Hadoop MapReduce para iniciantes, você aprenderá-
- O que é MapReduce no Hadoop?
- Arquitetura MapReduce em Big Data explicada em detalhes
- Arquitetura MapReduce explicada em detalhes
- Como o MapReduce organiza o trabalho?
Arquitetura MapReduce em Big Data explicada em detalhes
Todo o processo passa por quatro fases de execução, ou seja, divisão, mapeamento, embaralhamento e redução.
Agora, neste tutorial do MapReduce, vamos entender com um exemplo de MapReduce-
Considere que você tem os seguintes dados de entrada para o seu programa MapReduce no Big Data
Welcome to Hadoop ClassHadoop is goodHadoop is bad
O resultado final da tarefa MapReduce é
mau | 1 |
Aula | 1 |
Boa | 1 |
Hadoop | 3 |
é | 2 |
para | 1 |
Receber | 1 |
Os dados passam pelas seguintes fases de MapReduce em Big Data
Divisões de entrada:
Uma entrada para um MapReduce no trabalho de Big Data é dividida em partes de tamanho fixo chamadas de divisões de entrada A divisão de entrada é um pedaço da entrada que é consumido por um único mapa
Mapeamento
Esta é a primeira fase na execução do programa de redução de mapa. Nesta fase, os dados em cada divisão são passados para uma função de mapeamento para produzir valores de saída. Em nosso exemplo, uma tarefa da fase de mapeamento é contar um número de ocorrências de cada palavra de divisões de entrada (mais detalhes sobre a divisão de entrada são fornecidos abaixo) e preparar uma lista na forma de
Shuffling
Esta fase consome a saída da fase de mapeamento. Sua tarefa é consolidar os registros relevantes da saída da fase de Mapeamento. Em nosso exemplo, as mesmas palavras são combinadas com suas respectivas frequências.
Reduzindo
Nesta fase, os valores de saída da fase de embaralhamento são agregados. Esta fase combina os valores da fase Shuffling e retorna um único valor de saída. Em suma, esta fase resume o conjunto de dados completo.
Em nosso exemplo, esta fase agrega os valores da fase Shuffling, ou seja, calcula o total de ocorrências de cada palavra.
Arquitetura MapReduce explicada em detalhes
- Uma tarefa de mapa é criada para cada divisão, que então executa a função de mapa para cada registro na divisão.
- É sempre benéfico ter várias divisões porque o tempo gasto para processar uma divisão é pequeno em comparação com o tempo gasto para processar toda a entrada. Quando as divisões são menores, o processamento é melhor para o balanceamento de carga, pois estamos processando as divisões em paralelo.
- No entanto, também não é desejável ter divisões muito pequenas. Quando as divisões são muito pequenas, a sobrecarga de gerenciamento das divisões e da criação da tarefa do mapa começa a dominar o tempo total de execução do trabalho.
- Para a maioria dos trabalhos, é melhor fazer um tamanho de divisão igual ao tamanho de um bloco HDFS (que é 64 MB, por padrão).
- A execução de tarefas de mapa resulta na gravação de saída em um disco local no respectivo nó e não no HDFS.
- A razão para escolher o disco local em vez do HDFS é evitar a replicação que ocorre no caso de operação de armazenamento HDFS.
- A saída do mapa é uma saída intermediária que é processada por tarefas de redução para produzir a saída final.
- Assim que o trabalho for concluído, a saída do mapa pode ser descartada. Portanto, armazená-lo no HDFS com replicação torna-se um exagero.
- No caso de falha do nó, antes que a saída do mapa seja consumida pela tarefa de redução, o Hadoop executa novamente a tarefa do mapa em outro nó e recria a saída do mapa.
- Reduzir tarefa não funciona no conceito de localidade de dados. Uma saída de cada tarefa do mapa é alimentada para a tarefa de redução. A saída do mapa é transferida para a máquina onde a tarefa de redução está sendo executada.
- Nesta máquina, a saída é mesclada e, em seguida, passada para a função de redução definida pelo usuário.
- Ao contrário da saída do mapa, a saída reduzida é armazenada no HDFS (a primeira réplica é armazenada no nó local e as outras réplicas são armazenadas nos nós fora do rack). Então, escrever a saída de redução
Como o MapReduce organiza o trabalho?
Agora, neste tutorial do MapReduce, aprenderemos como o MapReduce funciona
O Hadoop divide o trabalho em tarefas. Existem dois tipos de tarefas:
- Tarefas de mapa (divisões e mapeamento)
- Reduzir tarefas (embaralhar, reduzir)
como acima mencionado.
O processo de execução completo (execução das tarefas Map e Reduce, ambas) é controlado por dois tipos de entidades chamadas de
- Jobtracker : atua como um mestre (responsável pela execução completa do trabalho enviado)
- Multiple Task Trackers : age como escravos, cada um deles executando o trabalho
Para cada tarefa enviada para execução no sistema, há um Jobtracker que reside no Namenode e vários rastreadores de tarefas que residem no Datanode .
- Um trabalho é dividido em várias tarefas que são executadas em vários nós de dados em um cluster.
- É responsabilidade do rastreador de trabalho coordenar a atividade agendando tarefas para serem executadas em nós de dados diferentes.
- A execução de uma tarefa individual fica a cargo do rastreador de tarefa, que reside em cada nó de dados que executa parte do trabalho.
- A responsabilidade do rastreador de tarefas é enviar o relatório de progresso ao rastreador de trabalho.
- Além disso, o rastreador de tarefas envia periodicamente um sinal de 'pulsação' ao Jobtracker para notificá-lo sobre o estado atual do sistema.
- Assim, o rastreador de trabalho acompanha o progresso geral de cada trabalho. No caso de falha da tarefa, o rastreador de trabalho pode reagendá-lo em um rastreador de tarefa diferente.