Entrada divide em mapreduce do hadoop

A maneira HDFS foi criado, ele quebra arquivos muito grandes em grandes blocos (por exemplo, medindo 128 MB), e armazena três cópias desses blocos em diferentes nós do cluster. HDFS não tem conhecimento do conteúdo desses arquivos.

Em fio, quando um trabalho de MapReduce é iniciado, o Gerenciador de recursos (a gestão de recursos de cluster e facilidade de agendamento de tarefas) cria um daemon Mestre Aplicação para cuidar do ciclo de vida do trabalho. (Em Hadoop 1, o JobTracker monitorado trabalhos individuais, bem como manipulação de agendamento de tarefas e gestão de recursos de cluster.)

Uma das primeiras coisas que o Mestre aplicativo faz é determinar quais blocos de arquivos são necessários para o processamento. O Mestre aplicativo solicita detalhes do NameNode de onde as réplicas dos blocos de dados necessários são armazenados. Usando os dados de localização para os blocos de arquivo, o Mestre aplicativo faz solicitações para o Gerenciador de recursos para ter tarefas mapa processar blocos específicos sobre os nós escravos onde eles estão armazenados.

A chave para o processamento MapReduce eficiente é que, sempre que possível, os dados são processados localmente - no nó escravo, onde ele é armazenado.

Antes de olhar para a forma como os blocos de dados são processados, você precisa olhar mais de perto como Hadoop armazena dados. Em Hadoop, os arquivos são compostos de registros individuais, que são, em última análise processados ​​um por um por tarefas Mapper.

Video: Running a Job - Intro to Hadoop and MapReduce

Por exemplo, o conjunto de dados de exemplo contém informações sobre vôos concluídos dentro dos Estados Unidos entre 1987 e 2008.

Para baixar o conjunto de dados de amostra, abra o navegador Firefox dentro da VM, e ir para o página dataexpo.

Video: Introduction to MapReduce



Você tem um arquivo grande para cada ano, e dentro de cada arquivo, cada linha individual representa um único vôo. Em outras palavras, uma linha representa um registro. Agora, lembre-se que o tamanho do bloco para o cluster Hadoop é de 64MB, o que significa que os arquivos de dados de luz são quebradas em pedaços de exatamente 64MB.

Você vê o problema? Se cada tarefa mapa processa todos os registros em um bloco de dados específico, o que acontece com os registros que abrangem as fronteiras do bloco? blocos de arquivos são exatamente 64MB (ou o que você definir o tamanho do bloco para ser), e porque HDFS não tem nenhuma concepção do que está dentro dos blocos de arquivos, não pode avaliar quando um registro pode transbordar para outro bloco.

Para resolver este problema, Hadoop usa uma representação lógica dos dados armazenados em blocos de arquivos, conhecidos como splits de entrada. Quando um cliente trabalho MapReduce calcula os splits de entrada, ele descobre que o primeiro álbum inteiro em um bloco começa e onde o último registro no bloco termina.

Nos casos em que o último registro em um bloco é incompleta, a divisão de entrada inclui informações de localização para o próximo bloco e o deslocamento dos dados necessários para completar o registro byte.

Video: Distributed Work - Intro to Hadoop and MapReduce

A figura mostra esta relação entre os blocos de dados de entrada e cisões.

Você pode configurar o daemon Aplicação Master (ou JobTracker, se você estiver em Hadoop 1) para calcular a entrada de racha em vez do cliente de trabalho, o que seria mais rápido para tarefas de processamento de um grande número de blocos de dados.

processamento de dados MapReduce é accionado por este conceito de divisões de entrada. O número de divisões de entrada que são calculados para uma aplicação específica determina o número de tarefas Mapper. Cada uma destas tarefas de mapeador é atribuído, sempre que possível, a um nó escravo onde a divisão de entrada é armazenado. O Gerenciador de recursos (ou JobTracker, se você estiver em Hadoop 1) faz o seu melhor para garantir que a entrada splits são processadas localmente.


Publicações relacionadas