Índice:
- Obtenha os grandes dados prontos
- Deixe o grande mapa de dados começar
- Reduzir e combinar para dados grandes
Vídeo: Cursos Online Impacta: Big Data com Hadoop - Fundamentos 2024
Para entender completamente as capacidades do Hadoop MapReduce, é importante diferenciar entre MapReduce (o algoritmo) e um implementação do MapReduce. Hadoop MapReduce é uma implementação do algoritmo desenvolvido e mantido pelo projeto Apache Hadoop.
É útil pensar sobre esta implementação como um motor MapReduce, porque é exatamente isso que funciona. Você fornece entrada (combustível), o motor converte a entrada em saída de forma rápida e eficiente, e você obtém as respostas que você precisa.
O Hadoop MapReduce inclui várias etapas, cada uma com um importante conjunto de operações que ajudam a atingir seu objetivo de obter as respostas que você precisa de dados importantes. O processo começa com uma solicitação do usuário para executar um programa MapReduce e continua até que os resultados sejam escritos de volta ao HDFS.
HDFS e MapReduce executam seu trabalho em nós em um cluster hospedado em racks de servidores de commodities. Para simplificar a discussão, o diagrama mostra apenas dois nós.
Obtenha os grandes dados prontos
Quando um cliente solicita um programa MapReduce para executar, o primeiro passo é localizar e ler o arquivo de entrada contendo os dados brutos. O formato do arquivo é completamente arbitrário, mas os dados devem ser convertidos para algo que o programa pode processar. Esta é a função de InputFormat e RecordReader. InputFormat decide como o arquivo será dividido em peças menores para processamento usando uma função chamada InputSplit.
Ele então atribui um RecordReader para transformar os dados brutos para processamento pelo mapa. Diversos tipos de RecordReaders são fornecidos com Hadoop, oferecendo uma grande variedade de opções de conversão. Esse recurso é uma das maneiras pelas quais o Hadoop gerencia a enorme variedade de tipos de dados encontrados em grandes problemas de dados.
Deixe o grande mapa de dados começar
Seus dados estão agora em uma forma aceitável para o mapa. Para cada par de entrada, uma instância distinta do mapa é chamada para processar os dados. Mas o que ele faz com a saída processada e como você pode acompanhá-los?
O mapa possui duas capacidades adicionais para resolver as questões. Como o mapa e a redução precisam trabalhar em conjunto para processar seus dados, o programa precisa coletar o resultado dos mapeadores independentes e passar para os redutores. Esta tarefa é executada por um OutputCollector. Uma função Reporter também fornece informações coletadas das tarefas do mapa para que você saiba quando ou se as tarefas do mapa estão completas.
Todo esse trabalho está sendo executado em múltiplos nós no cluster Hadoop simultaneamente.Você pode ter casos em que o resultado de determinados processos de mapeamento precisa ser acumulado antes que os redutores possam começar. Ou, alguns dos resultados intermediários podem precisar ser processados antes da redução.
Além disso, algumas dessas saídas podem estar em um nó diferente do nó onde os redutores para essa saída específica serão executados. O agrupamento e o arrastar de resultados intermédios são realizados por um particionador e um tipo. As tarefas do mapa fornecerão os resultados para uma partição específica como entradas para reduzir as tarefas.
Depois que todas as tarefas do mapa estiverem concluídas, os resultados intermédios são reunidos na partição e ocorre uma mistura, ordenando a saída para um ótimo processamento por redução.
Reduzir e combinar para dados grandes
Para cada par de saída, reduzir é chamado para executar sua tarefa. Da mesma forma que o mapa, reduzir recolhe sua saída enquanto todas as tarefas estão sendo processadas. Reduzir não pode começar até que todo o mapeamento seja feito. A saída de redução também é uma chave e um valor. Embora isso seja necessário para reduzir o seu trabalho, pode não ser o formato de saída mais eficaz para sua aplicação.
O Hadoop fornece um recurso OutputFormat, e funciona muito como InputFormat. OutputFormat assume o par de valores-chave e organiza a saída para gravação em HDFS. A última tarefa é realmente gravar os dados no HDFS. Isso é executado pelo RecordWriter, e ele funciona de forma semelhante ao RecordReader, exceto em sentido inverso. Leva os dados OutputFormat e grava-lo no HDFS na forma necessária para os requisitos do programa.
A coordenação de todas essas atividades foi gerenciada em versões anteriores do Hadoop por um programador de tarefas. Este programador era rudimentar e, à medida que a mistura de empregos mudava e crescia, era claro que era necessária uma abordagem diferente. A deficiência primária no antigo agendador era a falta de gerenciamento de recursos. A última versão do Hadoop tem essa nova capacidade.
Hadoop MapReduce é o coração do sistema Hadoop. Ele fornece todos os recursos que você precisa para quebrar grandes dados em pedaços gerenciáveis, processar os dados em paralelo em seu cluster distribuído e, em seguida, disponibilizar os dados para o consumo do usuário ou processamento adicional. E faz tudo isso de uma maneira altamente resistente e tolerante a falhas. Isto é apenas o começo.