Vídeo: Big Ideas: Demystifying Hadoop 2024
No seu núcleo, o MapReduce é um modelo de programação para o processamento de conjuntos de dados que são armazenados de forma distribuída nos nós escravos de um cluster Hadoop. O conceito-chave aqui é dividir e conquistar. Especificamente, você deseja quebrar um grande conjunto de dados em muitas peças menores e processá-las em paralelo com o mesmo algoritmo.
Com o sistema de arquivos distribuídos Hadoop (HDFS), os arquivos já estão divididos em peças de tamanho de mordida. MapReduce é o que você usa para processar todas as peças.
Os aplicativos MapReduce têm múltiplas fases, conforme explicado nesta lista:
-
Determine os conjuntos de dados exatos a serem processados a partir dos blocos de dados. Isso envolve calcular onde os registros a serem processados estão localizados dentro dos blocos de dados.
-
Execute o algoritmo especificado contra cada registro no conjunto de dados até todos os registros serem processados.
A instância individual do aplicativo executado contra um bloco de dados em um conjunto de dados é conhecida como uma tarefa de mapeador . (Esta é a parte de mapeamento do MapReduce.)
-
Execute localmente uma redução provisória da saída de cada mapeador.
(As saídas são combinadas provisoriamente, em outras palavras.) Esta fase é opcional porque, em alguns casos comuns, não é desejável.
-
Com base nos requisitos de particionamento, agrupe as partições aplicáveis dos dados dos conjuntos de resultados de cada mapeador.
-
Cure os conjuntos de resultados dos mapeadores em um único conjunto de resultados: a parte Reduzir do MapReduce.
Uma instância individual do aplicativo em execução contra dados de saída do mapeador é conhecida como uma tarefa de redutor . (Por mais estranho do que parecer, uma vez que "Reduzir" faz parte do nome MapReduce, esta fase pode ser opcional; as aplicações sem um redutor são conhecidas como tarefas somente no mapa , que podem ser úteis quando não há precisa combinar os conjuntos de resultados das tarefas do mapa.)