A fase aleatória do fluxo aplicativo mapreduce do hadoop
Video: Hadoop Map Reduce Development - Compression Map Reduce Demo
Conteúdo
Após a fase de Mapa e antes do início da fase Reduzir é um processo handoff, conhecido como embaralhar e classificar. Aqui, os dados das tarefas de mapeador é preparado e mudou-se para os gânglios, onde as tarefas redutor serão executados. Quando a tarefa mapeador estiver concluída, os resultados são classificados pela chave, dividido, se houver vários redutores, e, em seguida, gravados no disco.
Pode ver este conceito na figura seguinte, que mostra o fluxo de processamento de dados MapReduce e a sua interacção com os componentes físicos do cluster Hadoop. (Uma nota rápida: Os dados na memória é representado por quadrados brancos, e os dados armazenados no disco é representado por quadrados cinzentos.)
Video: 029 Failure Scenarios Classic Map Reduce in hadoop
Para acelerar o processo global MapReduce, os dados são imediatamente mudou-se para nós as tarefas redutor, para evitar uma enxurrada de atividade de rede quando a tarefa final mapeador termina seu trabalho. Esta transferência acontece enquanto a tarefa mapeador está em execução, como as saídas para cada registro - lembre-se - são armazenadas na memória de uma tarefa de espera redutor. (Você pode configurar se isso acontece - ou não acontece -. E também o número de segmentos envolvidos)
Tenha em mente que mesmo que uma tarefa redutor pode ter mais de saída da tarefa mapeador, o processamento da tarefa reduzir não pode começar até que todas as tarefas de mapeador de ter terminado.
Para evitar situações em que o desempenho de um trabalho MapReduce é dificultada por uma tarefa mapeador straggling que está sendo executado em um nó escravo fraco desempenho, a estrutura MapReduce usa um conceito chamado execução especulativa.
No caso de algumas tarefas de mapeador está executando mais lento do que o que é considerado razoável, o Mestre de aplicação vai gerar tarefas duplicadas (em Hadoop 1, o JobTracker faz isso). Qualquer que seja a tarefa termina primeiro - o duplicado ou o original - seus resultados são armazenados no disco, e a outra tarefa é morto. Se você está monitorando seus trabalhos de perto e está se perguntando por que há mais tarefas de mapeador de correr do que o esperado, esta é uma razão provável.
A saída de tarefas de mapeador não é escrito para HDFS, mas sim para o disco local no nó escravo onde a tarefa mapeador foi executado. Como tal, não é replicado em todo o cluster Hadoop.
Além de comprimir a saída, você pode potencialmente aumentar o desempenho, executando uma tarefa combinador. Esta tática simples, mostrado aqui, envolve a execução de reduzir a um local da saída para tarefas de mapeador individuais.
Na maioria dos casos, nenhuma programação extra é necessária, como você pode dizer que o sistema use a função de redutor. Se você não está usando sua função de redutor, você precisa se certificar de que a saída da função combinador é idêntico ao da função de redutor.
Video: MapReduce Algorithms Part I (Advanced) | Stanford University
Cabe ao quadro MapReduce se a função combinador precisa ser executado uma vez, várias vezes, ou nunca, por isso é fundamental que o código do combinador garante que os resultados finais não são afetados por várias execuções. Executando o combinador pode produzir um benefício de desempenho através da diminuição da quantidade de dados intermediário que de outra forma necessitam de ser transferidos através da rede.
Isso também reduz a quantidade de processamento das tarefas redutor precisaria fazer. Você está executando uma tarefa extra aqui, por isso é possível que qualquer ganho de desempenho é insignificante ou pode até resultar em pior desempenho global. Sua milhagem pode variar, assim que testar isso com cuidado.
Depois de todos os resultados das tarefas de mapeador são copiados para nós as tarefas redutor, esses arquivos são mesclados e ordenados.