Introdução ao MapReduce
O MapReduce é um componente computacional do Hadoop Framework para escrever facilmente aplicativos que processam grandes quantidades de dados em paralelo e armazenados em grandes agrupamentos de máquinas baratas, de maneira confiável e tolerante a falhas. Neste tópico, vamos aprender sobre como o MapReduce funciona?
O MapReduce pode executar cálculos distribuídos e paralelos usando grandes conjuntos de dados em um grande número de nós. Uma tarefa MapReduce geralmente divide os conjuntos de dados de entrada e, em seguida, processa cada um deles independentemente pelas tarefas de Mapa de maneira completamente paralela. A saída é classificada e inserida para reduzir tarefas. A entrada e a saída do trabalho são armazenadas em sistemas de arquivos. As tarefas são agendadas e monitoradas pela estrutura.
Como o MapReduce funciona?
A arquitetura MapReduce contém dois componentes principais como serviços do Daemon, responsáveis pela execução de tarefas de mapeador e redutor, monitorando e reexecutando as tarefas em falha. No Hadoop 2 em diante, Resource Manager e Node Manager são os serviços daemon. Quando o cliente da tarefa envia uma tarefa MapReduce, esses daemons entram em ação. Eles também são responsáveis pelo processamento paralelo e pelos recursos de tolerância a falhas dos trabalhos do MapReduce.
No Hadoop 2, as funcionalidades de gerenciamento de recursos e agendamento ou monitoramento de tarefas são segregadas pelo YARN (Yet Another Resource Negotiator) como daemons diferentes. Comparado ao Hadoop 1 com Rastreador de tarefas e Rastreador de tarefas, o Hadoop 2 contém um Gerenciador de recursos (RM) global e um Mestre de aplicativos (AM) para cada aplicativo.
- Job Client envia o trabalho para o Resource Manager.
- O planejador do YARN Resource Manager é responsável pela coordenação da alocação de recursos do cluster entre os aplicativos em execução.
- O YARN Node Manager é executado em cada nó e faz o gerenciamento de recursos no nível do nó, coordenando-o com o gerenciador de recursos. Ele lança e monitora os contêineres de computação na máquina no cluster.
- O Application Master ajuda os recursos do Resource Manager e usa o Node Manager para executar e coordenar tarefas do MapReduce.
- O HDFS geralmente é usado para compartilhar os arquivos de trabalho entre outras entidades.
Fases do modelo MapReduce
O modelo MapReduce possui três fases principais e uma opcional:
1. Mapeador
- É a primeira fase da programação do MapReduce e contém a lógica de codificação da função do mapeador.
- A lógica condicional é aplicada ao número 'n' de blocos de dados espalhados por vários nós de dados.
- A função Mapper aceita pares de valores-chave como entrada como (k, v), em que a chave representa o endereço de deslocamento de cada registro e o valor representa todo o conteúdo do registro.
- A saída da fase Mapper também estará no formato de valor-chave como (k ', v').
2. Aleatório e classificação
- A saída de vários mapeadores (k ', v') passa para a fase Shuffle and Sort.
- Todos os valores duplicados são removidos e valores diferentes são agrupados com base em chaves semelhantes.
- A saída da fase Aleatório e Classificação será novamente pares de valores-chave como chave e matriz de valores (k, v ()).
3. Redutor
- A saída da fase Aleatória e Classificação (k, v ()) será a entrada da fase Redutora.
- Nesta fase, a lógica da função redutora é executada e todos os valores são agregados nas respectivas chaves correspondentes.
- O redutor consolida as saídas de vários mapeadores e calcula a saída do trabalho final.
- A saída final é gravada em um único arquivo no diretório de saída do HDFS.
4. Combinador
- É uma fase opcional no modelo MapReduce.
- A fase do combinador é usada para otimizar o desempenho dos trabalhos do MapReduce.
- Nesta fase, várias saídas dos mapeadores são localmente reduzidas no nível do nó.
- Por exemplo, se diferentes saídas do mapeador (k, v) provenientes de um único nó contiverem duplicatas, elas serão combinadas, ou seja, localmente reduzidas como uma única saída (k, v ()).
- Essa fase torna a fase aleatória e ordenada ainda mais rápida, permitindo um desempenho adicional nos trabalhos do MapReduce.
Todas essas fases em um trabalho MapReduce podem ser representadas como abaixo:
Por exemplo, a lógica do MapReduce para encontrar a contagem de palavras em uma matriz de palavras pode ser mostrada abaixo:
fruits_array = (maçã, laranja, maçã, goiaba, uvas, laranja, maçã)
- A fase do mapeador tokeniza a matriz de palavras de entrada em 'n' número de palavras para fornecer a saída como (k, v). Por exemplo, considere 'maçã'. A saída do mapeador será (maçã, 1), (maçã, 1), (maçã, 1).
- Aleatório e Classificação aceitam a saída do mapeador (k, v) e agrupam todos os valores de acordo com suas chaves como (k, v ()). ou seja (maçã, (1, 1, 1)).
- A fase Redutor aceita a reprodução aleatória e a classificação e fornece o agregado dos valores (maçã, (1 + 1 + 1)), correspondentes às suas chaves. ie (maçã, 3).
Execução especulativa do trabalho MapReduce
A velocidade do MapReduce é dominada pela tarefa mais lenta. Portanto, para aumentar a velocidade, um novo mapeador funcionará no mesmo conjunto de dados ao mesmo tempo. O que concluir a tarefa primeiro será considerado como a saída final e a outra será eliminada. É uma técnica de otimização.
Benefícios do MapReduce
Aqui os benefícios do MapReduce são mencionados abaixo
1. Tolerância a falhas
- No meio de um trabalho de redução de mapa, se uma máquina carregando alguns blocos de dados falhar, a arquitetura lidará com a falha.
- Ele considera cópias replicadas dos blocos em máquinas alternativas para processamento adicional.
2. Resiliência
- Cada nó atualiza periodicamente seu status para o nó principal.
- Se um nó escravo não enviar sua notificação, o nó mestre redesignará a tarefa atualmente em execução desse nó escravo para outros nós disponíveis no cluster.
3. Rápido
- O processamento de dados é rápido, pois o MapReduce usa o HDFS como sistema de armazenamento.
- O MapReduce leva alguns minutos para processar terabytes de grandes volumes de dados não estruturados.
4. Processamento Paralelo
- As tarefas do MapReduce processam vários blocos dos mesmos conjuntos de dados em paralelo, dividindo as tarefas.
- Isso oferece a vantagem de concluir a tarefa em menos tempo.
5. Disponibilidade
- Várias réplicas dos mesmos dados são enviadas para vários nós na rede.
- Assim, em caso de falha, outras cópias estão prontamente disponíveis para processamento sem nenhuma perda.
6. Escalabilidade
- O Hadoop é uma plataforma altamente escalável.
- Os sistemas RDBMS tradicionais não são escaláveis de acordo com o aumento no volume de dados.
- O MapReduce permite executar aplicativos de um grande número de nós, usando terabytes e petabytes de dados.
7. Custo-benefício
- O recurso de expansão do Hadoop, juntamente com a programação do MapReduce, permite armazenar e processar dados de uma maneira muito eficaz e acessível.
- A economia de custos pode ser enorme como números de centenas de terabytes de dados.
Conclusão - Como o MapReduce funciona
Os dados modernos estão se movendo mais em direção ao tipo não estruturado e a enorme opção convencional de processamento de dados como RDBMS é ainda mais difícil, demorada e cara. Mas a programação do MapReduce do Hadoop é muito eficaz, mais segura e mais rápida no processamento de grandes conjuntos de dados de até terabytes ou petabytes.
Artigos recomendados
Este é um guia de Como o MapReduce funciona. Aqui discutimos as fases do modelo MapReduce com benefícios e como ele funciona. Você também pode consultar os seguintes artigos para saber mais -
- Componentes do ecossistema Hadoop
- Algoritmos do MapReduce
- O que é o MapReduce no Hadoop?
- Perguntas da entrevista do MapReduce