Database
 sql >> Base de Dados >  >> RDS >> Database

Como o MapReduce funciona no Hadoop


MapReduce foi um modelo introduzido pelo Google como um método para resolver uma classe de problemas de Big Data com grandes clusters de máquinas baratas. O Hadoop absorve esse modelo no núcleo de seu processo de trabalho. Este artigo dá uma ideia introdutória do modelo MapReduce usado pelo Hadoop na resolução do problema de Big Data.

Visão geral


Um aplicativo típico de Big Data lida com um grande conjunto de dados escaláveis. Usar um único banco de dados para armazenar e recuperar pode ser um grande gargalo de processamento. Isso é particularmente verdadeiro se usarmos um banco de dados monolítico para armazenar uma grande quantidade de dados, como podemos ver com bancos de dados relacionais e como eles são usados ​​como um único repositório. Isso não vai funcionar, especialmente temos que lidar com grandes conjuntos de dados em um ambiente distribuído.

O Google usou o algoritmo MapReduce para resolver a situação e apresentou uma solução. A ideia é dividir a tarefa maior em partes menores gerenciáveis ​​e distribuí-las entre os computadores da rede para processamento. O resultado assim obtido é integrado para formar o conjunto de dados final. Essa ideia se tornou a base do projeto Hadoop de Doug Cutting. O Hadoop usa esse algoritmo para processar dados em paralelo com outros para fornecer uma análise estatística completa em grandes conjuntos de dados. Portanto, o Hadoop pode ser dividido em duas partes:
  • Processamento: Alavancado pelo algoritmo MapReduce
  • Armazenamento: Alavancado pelo HDFS

O Hadoop MapReduce é, portanto, uma implementação do algoritmo desenvolvido e mantido pelo projeto Apache Hadoop. Funciona como uma máquina em si, onde fornecemos entrada e o motor responde transformando entrada em saída de forma rápida e eficiente, processando em vários estágios. Essa ideia abertamente simplista precisa de um pouco de elaboração à medida que segue a linha.

MapReduce


MapReduce é um modelo de programação paralela usado para processamento rápido de dados em um ambiente de aplicativo distribuído. Ele funciona em conjuntos de dados (multiterabytes de dados) distribuídos em clusters (milhares de nós) na rede de hardware de mercadoria. Os programas MapReduce são executados no Hadoop e podem ser escritos em várias linguagens—Java, C++, Python e Ruby. As principais características do programa MapReduce é que ele absorveu inerentemente o espírito do paralelismo nos programas. Isso o torna ideal para análise de dados em grande escala, que pode alavancar o modelo de paralelismo em sua prática para extrair resultados com mais eficiência e rapidez de uma infraestrutura existente.

Como funciona


O Hadoop MapReduce divide as tarefas em vários estágios, cada um com um conjunto significativo de funções para extrair o resultado desejado do Big Data. Ele funciona em nós em um cluster hospedado em uma coleção de servidores comuns. O processo começa com a solicitação do usuário que executa o mecanismo MapReduce e termina com o resultado sendo armazenado de volta no HDFS.

Podemos iniciar um trabalho MapReduce para executar invocando o JobClient.runJob(conf) método. Este é um método conveniente para criar um novo JobClient instância. Isso, por sua vez, invoca submitJob() e pesquisa o progresso do trabalho a cada segundo e informa ao console se houver alguma alteração desde que o último relatório foi gerado. Isso tem um efeito cascata e aciona um conjunto de operações nos bastidores. O primeiro passo é encontrar e ler o arquivo de entrada que contém os dados brutos. O formato do arquivo é arbitrário e deve ser convertido para um formato adequado para processamento. Este é o trabalho para InputFormat e o RecordReader(RR) . O InputFormat usa a função chamada InputSplit para dividir o arquivo em partes menores. O RecorReader(RR) em seguida, transforma os dados brutos e os disponibiliza para processamento por map .

Mapeamento


Uma vez que os dados são aceitáveis ​​para mapear, ele cria uma instância distinta para cada par de entrada (chave e valor) e inicia o processamento. Assim que a função de mapeamento começa a produzir saída, ela não é gravada diretamente no disco; em vez disso, ele é armazenado no buffer de memória para fazer alguma pré-ordenação. Cada mapa mantém um buffer circular onde redireciona a saída. Ao exceder o tamanho do limite, o derramamento de conteúdo é gravado de volta no disco. Ele divide ainda mais os dados em partições aceitáveis ​​para o redutor para o qual os dados são redirecionados em seguida. Todos esses trabalhos, no entanto, ocorrem de forma simultânea em vários nós no cluster Hadoop. Depois de concluir as tarefas do mapa, os resultados intermediários são acumulados na partição, e o embaralhamento e a classificação ocorrem para otimizar a saída para reduzir para assumir como entrada.

Reduzir e Mesclar


O que reduz é também uma chave, um par de valores e atua de maneira semelhante ao mapa. Ele reúne a saída do mapa de várias tarefas de mapa no cluster e começa a processar somente após a conclusão do mapeamento. Ele possui um conjunto de threads de copiadora para mesclar e derramar no disco a saída fornecida pelo mapa. À medida que as cópias são acumuladas no disco, um thread em segundo plano faz o trabalho de mesclá-las em arquivos maiores e classificados. Ele também fornece a saída na forma de uma chave, um par de valores e pode precisar ser reformatado pelo OutputFormat antes da aplicação poder aceitar o formato. O Formato de Saída finalmente pega a chave, o par de valores e grava os dados processados ​​no HDFS. Aqui, RecordWriter desempenha o papel principal, bem como RecordReader , exceto que ele participa durante a leitura do HDFS no início.

Conclusão


Esta é apenas a ponta do iceberg. Há muitos detalhes intrincados e muito mais acontece nos bastidores. Resumindo, o Hadoop MapReduce fornece os recursos para dividir o Big Data em partes menores e gerenciáveis, processá-los em paralelo em um cluster distribuído e, finalmente, disponibilizar os dados para consumo ou processamento adicional. Hoje, o Hadoop cresceu e se tornou um ecossistema maior de ferramentas e tecnologias para resolver problemas de Big Data de última geração e está evoluindo rapidamente para refinar seus recursos.