Início
topics
MapReduce
Atualizado em: 19 de novembro de 2024
Colaboradores: Jim Holdsworth, Matthew Kosinski
O MapReduce é um modelo de programação que usa processamento paralelo para acelerar o processamento de dados em grande escala. O MapReduce permite escalabilidade maciça entre centenas ou milhares de servidores em um cluster Hadoop.
O nome "MapReduce" refere-se às duas tarefas que o modelo executa para ajudar a "fragmentar" uma grande tarefa de processamento de dados em muitas tarefas menores, que podem ser executadas mais rapidamente em paralelo.
O modelo de programação do MapReduce é um dos principais componentes de processamento no cerne do Apache Hadoop, uma framework de software de código aberto com suporte da Apache Software Foundation e desenvolvida com base na linguagem de programação Java.
O modelo MapReduce também pode ser usado fora do Hadoop.
Saiba como encontrar a base de dados aberta e confiável certa para as necessidades de sua empresa.
O MapReduce ajuda a dividir projetos de processamento de dados em partes menores para que possam ser executados mais rapidamente.
Usar um processador para analisar um arquivo enorme com terabytes ou petabytes de dados pode, por exemplo, levar 10 horas. Um trabalho do MapReduce pode dividir esse mesmo arquivo de dados em 10 tarefas, que são executadas em paralelo em 10 processadores. Esse trabalho pode levar apenas uma hora ou menos para ser executado. Os dados podem ser agregados a partir dos nós de computação distribuídos para produzir um resultado.
Embora o mapeamento e a redução sejam as funções essenciais do modelo do MapReduce, o processo geral inclui mais algumas etapas.
Uma aplicação do MapReduce aceita dados de entrada, que podem incluir dados estruturados ou não estruturados. As aplicações do MapReduce geralmente funcionam com arquivos de entrada armazenados no sistema de arquivos distribuídos do Hadoop (HDFS), mas o modelo também pode funcionar com outras fontes de dados. (Para obter mais informações, consulte "MapReduce dentro do ecossistema do Hadoop".)
Para um trabalho específico, a framework do MapReduce ajuda a selecionar servidores distribuídos, gerenciar comunicações e transferências de dados e oferecer suporte a tolerância a falhas e redundância.
Os dados de entrada são divididos em blocos menores. Esses blocos são distribuídos para os mapeadores (as funções que realizam o mapeamento na próxima etapa) localizados em vários nós de computação. A framework do MapReduce visa a uma atribuição aproximadamente uniforme de dados entre os mapeadores para um equilíbrio de carga eficiente.
Em cada nó, a função de mapear processa os dados recebidos, convertendo os dados em pares de chave/valor.
O número total de mapeadores é determinado dentro do framework do Hadoop, com base no volume total de dados e nos blocos de memória disponíveis em cada mapeador. Parâmetros para mapeadores, redutores e formatos de saída podem ser definidos dentro do cluster Hadoop.
O framework do Hadoop classifica as saídas do mapa e atribui todos os pares de chave/valor com a mesma "chave" (tópico) ao mesmo redutor. Por exemplo, em um conjunto de dados de cidades e suas temperaturas máximas diárias, quaisquer dados com a chave "Tóquio" iria para o mesmo redutor.
O redutor, como o nome sugere, é a função que executa a etapa de redução.
As funções de reduzir processam os pares de chave/valor que os mapeadores emitem. Isso pode envolver a mesclagem, tabulação ou a realização de outras operações nos dados, dependendo do tipo de processamento necessário.
O mapeamento e a redução podem ser feitos no mesmo conjunto de servidores, mas isso é opcional.
Cada redutor produz os resultados de seu processamento para o HDFS ou outro armazenamento de dados.
Independentemente da quantidade de dados que uma organização deseja analisar, os princípios fundamentais permanecem os mesmos.
Para este exemplo, o conjunto de dados inclui cidades (as chaves) e as temperaturas diárias correspondentes (os valores) registradas para cada cidade. Um exemplo de par chave/valor pode ter esta aparência: <Toronto, 18>.
Os dados estão espalhados em vários arquivos. Cada arquivo pode incluir dados de um conjunto de cidades e pode incluir a mesma cidade várias vezes.
A partir desse conjunto de dados, o usuário deseja identificar a "temperatura máxima" de cada cidade no período rastreado.
Uma implementação do MapReduce para lidar com esse trabalho poderia ter a seguinte aparência:
O ecossistema do Hadoop é um pacote de módulos de código aberto projetados para trabalhar juntos para promover a eficiência. Existem módulos que constituem a principal framework do Hadoop, incluindo o MapReduce e outros três:
O HDFS é um sistema de arquivos distribuídos para armazenar dados de aplicações em até milhares de servidores comuns.
O HDFS é projetado para fornecer tolerância a falhas para o Hadoop e acesso rápido aos dados. Por padrão, os blocos de dados são replicados em vários nós no momento da carga ou da gravação.
A arquitetura do HDFS conta com um NameNode responsável pelo gerenciamento de namespaces do sistema de arquivos e do acesso a arquivos, juntamente com vários DataNodes responsáveis pelo gerenciamento do armazenamento de dados.
O Apache Hadoop de código aberto, YARN, é uma framework para programação de trabalhos e gerenciamento de recursos de clusters. Ele é compatível com várias cargas de trabalho, como SQL Queries, modelagem avançada e streaming em tempo real.
Este módulo é uma coleção de utilitários e bibliotecas de recursos compatíveis com outros módulos do Hadoop. Também conhecido como Hadoop Core, ele inclui vários recursos para recuperação automática de falhas, abstração no nível do sistema de arquivos e no nível do sistema operacional, arquivos e scripts Java Archive (JAR) e muito mais.
Além da framework principal do Hadoop, o ecossistema do Hadoop também inclui:
A programação do MapReduce oferece vários benefícios que podem ajudar as organizações a obter insights valiosos da análise de big data, como:
O MapReduce pode lidar com eficiência com muitos casos de uso simples, embora tarefas complexas de processamento de dados possam ser executadas mais rapidamente em outras aplicações. Aqui estão algumas aplicações adequadas à abordagem de processamento paralelo do MapReduce:
O paradigma de programação do MapReduce foi criado em 2004 pelos cientistas da computação do Google Jeffery Dean e Sanjay Ghemawat. O objetivo do modelo MapReduce é simplificar a transformação e a análise de grandes conjuntos de dados por meio de processamento paralelo maciço em grandes clusters de hardware comum. Ele também permite que os programadores se concentrem em algoritmos em vez de gerenciamento de dados.
Embora o Google tenha introduzido a primeira framework do MapReduce, o Apache Hadoop MapReduce talvez seja a mais popular.
O MapReduce desempenhou um papel fundamental no avanço da análise de big data, mas tem suas desvantagens. Por exemplo, os dados geralmente não são retidos na memória pelo MapReduce, e a lógica iterativa só é possível encadeando aplicativos MapReduce. Esses fatores aumentam a complexidade e podem levar a tempos de processamento mais longos.
Embora o MapReduce continue sendo amplamente utilizado, especialmente em sistemas legados, muitas organizações estão migrando para frameworks mais rápidas ou especializadas, como o Apache Spark, para aplicações de big data.
Crie uma estratégia de dados que elimine silos de dados, reduza a complexidade e melhore a qualidade de dados para proporcionar experiências excepcionais para clientes e funcionários.
O watsonx.data permite escalar a análise de dados e a IA com todos os seus dados, onde quer que estejam, por meio de um armazenamento de dados aberto, híbrido e governado.
Libere o valor dos dados empresariais com a IBM Consulting, construindo uma organização baseada em insights, que traz vantagem para os negócios.
Explore os benefícios de trabalhar com um data lakehouse, incluindo dados mais fidedignos e execução mais confiável de análise de dados e projetos de IA.
Um guia do líder de dados para construir uma organização baseada em dados para potencializar a vantagem competitiva.
O Apache Hadoop é uma framework de software de código aberto que oferece processamento distribuído de grandes conjuntos de dados, altamente confiável, utilizando modelos de programação simples.