Vídeo: Create and Execute MapReduce in Eclipse 2024
A fase Reduzir processa o chaves e suas listas de valores individuais, de modo que o que normalmente é retornado ao aplicativo cliente é um conjunto de pares chave / valor. Aqui está o blow-by-blow até agora: um grande conjunto de dados foi dividido em partes menores, chamado divisões de entrada, e instâncias individuais de tarefas de mapeador processaram cada uma delas.
Em alguns casos, esta única fase de processamento é tudo o que é necessário para gerar a saída desejada do aplicativo. Por exemplo, se você estiver executando uma operação de transformação básica nos dados - convertendo todo o texto em maiúsculas, por exemplo, ou extraindo quadros de arquivos de vídeo - a única fase é tudo o que você precisa. (Isto é conhecido como um mapa somente , a propósito.)
Mas em muitos outros casos, o trabalho é apenas meio feito quando as tarefas do mapeador escreveram a saída. A tarefa restante está reduzindo todos os resultados intermédios para uma única resposta unificada.
Semelhante à tarefa do mapeador, que processa cada registro, um por um, o redutor processa cada chave individualmente. Normalmente, o redutor retorna um único par de chaves / valores para cada chave que ele processa. No entanto, esses pares de chave / valor podem ser tão expansivos ou tão pequenos como você precisa.
Quando as tarefas do redutor estão concluídas, cada uma delas retorna um arquivo de resultados e o armazena no HDFS (Hadoop Distributed File System). Como mostrado aqui, o sistema HDFS automaticamente replica esses resultados.
Onde o Resource Manager (ou JobTracker se você estiver usando o Hadoop 1) tenta o seu melhor atribuir recursos às tarefas do mapeador para garantir que as divisões de entrada sejam processadas localmente, não existe uma estratégia para as tarefas redutoras. Supõe-se que os conjuntos de resultados da tarefa do mapeador precisam ser transferidos pela rede para serem processados pelas tarefas redutoras.
Esta é uma implementação razoável porque, com centenas ou mesmo milhares de tarefas de mapeador, não haveria nenhuma maneira prática para que as tarefas redutoras tenham a mesma prioridade de localidade.