Início

topics

MapReduce

O que é o MapReduce?
Use o MapReduce com produtos IBM Inscreva-se para receber o boletim informativo Think
Ilustração com colagem de pictogramas de monitor de computador, servidor, nuvens e pontos

Atualizado em: 19 de novembro de 2024 
Colaboradores
: Jim Holdsworth, Matthew Kosinski

O que é o MapReduce?

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.

  • A primeira é a "tarefa de mapear", que converte um conjunto de dados em outro conjunto de dados formatado como pares chave/valor, como cidades (chaves) e temperaturas máximas diárias (valores).

  • A segunda é a "tarefa de reduzir", que pega as saídas de uma tarefa de mapear, agrega todos os valores com a mesma chave e processa os dados para produzir um conjunto final de pares chave/valor.

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.

A IA requer novas formas de gerenciamento de dados

Saiba como encontrar a base de dados aberta e confiável certa para as necessidades de sua empresa.

Conteúdo relacionado Registre-se para receber o guia sobre modernização de aplicativos
Como funciona o MapReduce

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.

Entrada

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.

Divisão
 

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.

Mapeamento
 

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.

Embaralhamento
 

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.

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. 

Resultado
 

Cada redutor produz os resultados de seu processamento para o HDFS ou outro armazenamento de dados.

Um exemplo do MapReduce

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:

  1. Arquivos de dados contendo informações de temperatura alimentam a aplicação do MapReduce como entrada.

  2. Os arquivos são divididos em tarefas de mapear, com cada tarefa atribuída a um dos mapeadores.

  3. Os mapeadores convertem os dados em pares de chave/valor.

  4. As saídas de mapear são embaralhadas e classificadas de modo que todos os valores com a mesma chave de cidade acabem com o mesmo redutor. Por exemplo, todos os valores de temperatura para Toronto vão para um redutor, enquanto outro redutor agrega todos os valores para Londres.

  5. Cada redutor processa seus dados para determinar o valor de temperatura mais alto para cada cidade. Então, os dados são reduzidos para apenas o par de chave/valor mais alto de cada cidade.

  6. Após a fase de reduzir, os valores mais altos podem ser coletados para produzir um resultado: <Tóquio, 38> < Londres, 27> < Nova York, 33> < Toronto, 32>.
MapReduce dentro do ecossistema do Hadoop

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:

Sistema de arquivos distribuídos do Hadoop (HDFS)
 

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.

Yet Another Resource Negotiator (YARN)
 

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.

Hadoop Common
 

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.

Outros módulos
 

Além da framework principal do Hadoop, o ecossistema do Hadoop também inclui:

  • HBase (um banco de dados NoSQL não relacional)
  • Mahout e Spark MLlib (bibliotecas de algoritmos para aprendizado de máquina)
  • Oozie (um agendador de trabalhos)
  • Apache Hive e Apache Pig (ferramentas de processamento de dados baseadas em consultas)
  • Solr e Lucene (para pesquisa e indexação)
  • Spark (mecanismo de processamento de dados in-memory) 
  • Zookeeper (coordenação de clusters)
Benefícios do MapReduce

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:

  • Escalabilidade: o MapReduce permite que as organizações processem petabytes de dados armazenados no HDFS em vários servidores ou nós.

  • Processamento mais rápido: com processamento paralelo e movimentação mínima de dados, o MapReduce oferece otimização do processamento de big data para volumes maciços de dados.

  • Simplicidade: os desenvolvedores podem escrever aplicações MapReduce na linguagem de programação de sua preferência, incluindo Java, C++ e Python.

  • Economia de custos: como um programa de código aberto, o MapReduce pode economizar algum orçamento de uma organização em despesas de software. Dito isso, ainda haverá custos associados à infraestrutura e à equipe de engenharia de dados.
Casos de uso do MapReduce

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:

  • Integração de dados, onde a framework do MapReduce é usada para executar o processo de extrair, transformar e carregar (ETL) para preparar os dados para análise e armazenamento.

  • Processamento de imagens, onde tarefas como classificação de imagens podem ser divididas em conjuntos de dados menores e processadas em paralelo.

  • Log Analysis, como identificar tendências por meio da revisão de arquivos de log de servidores da web ou de aplicações.

  • Aprendizado de máquina (ML), onde o MapReduce pode ajudar com tarefas de treinamento de ML, como filtragem colaborativa, clustering k-means e regressão linear.

  • Análise de sentimento, onde o MapReduce pode ajudar a somar pontuações de clientes em um site ou identificar clusters de resposta, por exemplo.

  • Tabulação, como contar quantos clientes renovaram suas contas, por país, no ano passado.

  • Mineração de texto, como tarefas de contagem de palavras que rastreiam o número de vezes que uma palavra ocorre em um determinado conjunto de entradas, como um quadro de comentários.
História 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.

Soluções relacionadas
Software e soluções de gerenciamento de dados

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.

Explore soluções de gerenciamento de dados
IBM watsonx.data

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.

Conheça o watsonx.data
Serviços de consultoria de dados e análise de dados

Libere o valor dos dados empresariais com a IBM Consulting, construindo uma organização baseada em insights, que traz vantagem para os negócios.

Conheça os serviços de análise de dados
Recursos Gerenciamento de dados para IA e análise de dados em escala

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.

O diferenciador dos dados

Um guia do líder de dados para construir uma organização baseada em dados para potencializar a vantagem competitiva.

O que é o Apache Hadoop?

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.

Dê o próximo passo

Escale cargas de trabalho de IA para todos os seus dados, em qualquer lugar, com o IBM watsonx.data, um armazenamento de dados feito sob medida, construído em uma arquitetura aberta de data lakehouse.

Explore o watsonx.data Agende uma demonstração em tempo real