Todos os produtos
Search
Central de documentação

MaxCompute:MapReduce

Última atualização: Oct 16, 2026

Este tópico descreve as interfaces de programação MapReduce que o MaxCompute suporta e seus respectivos limites.

O que é o MapReduce

O MapReduce é um framework típico de computação distribuída. Ele utiliza uma abordagem de divisão e conquista para decompor problemas grandes ou complexos em subproblemas menores e mais gerenciáveis. Em seguida, resolve esses subproblemas e mescla os resultados para obter a solução final. Em comparação com os frameworks de programação paralela tradicionais, o MapReduce oferece vantagens como alta tolerância a falhas, facilidade de uso e boa extensibilidade. Ao implementar programas paralelos no MapReduce, você não precisa considerar os detalhes subjacentes de um cluster distribuído, como armazenamento de dados ou mecanismos de comunicação entre nós. Isso simplifica a programação distribuída.

A figura a seguir mostra o fluxo de trabalho do MapReduce.MapReduce

O MaxCompute oferece duas interfaces de programação MapReduce:

  • MaxCompute MapReduce: Esta é a API nativa do MaxCompute. Esta versão oferece execução rápida e simplifica o desenvolvimento por não expor o sistema de arquivos.

  • MaxCompute Extended MapReduce (MR2): Esta versão suporta lógicas mais complexas de agendamento de jobs, e sua implementação é compatível com a interface nativa do MaxCompute. Em comparação com o MapReduce tradicional, o MR2 altera os modelos subjacentes de agendamento e E/S para evitar operações de E/S redundantes durante a execução do job.

Essas versões são bastante semelhantes em termos de Terms, Job Submission, Input and Output e Resource Usage, mas seus SDKs Java são diferentes. Para obter mais informações, consulte o Hadoop Map/Reduce Tutorial.

Nota

Você não pode usar o MapReduce para ler ou gravar dados em uma tabela externa.

MapReduce

Cenários

O MapReduce suporta os seguintes cenários:

  • Pesquisa: rastreamento web, índices invertidos e PageRank.

  • Análise de logs de acesso à web:

    • Analisar e minerar o comportamento do usuário, como navegação e compras, para fornecer recomendações personalizadas.

    • Analisar padrões de acesso do usuário.

  • Análise estatística de textos:

    • Contagem de palavras e análise de frequência de termo e frequência inversa de documento (TF-IDF) em romances populares.

    • Análise estatística e de citações de artigos acadêmicos e documentos de patentes.

    • Análise de dados da Wikipedia.

  • Mineração de grandes volumes de dados, como dados não estruturados, dados espaço-temporais e dados de imagem.

  • Aprendizado de máquina: aprendizado supervisionado, aprendizado não supervisionado e algoritmos de classificação, como árvores de decisão e máquinas de vetores de suporte (SVMs).

  • Processamento de Linguagem Natural:

    • Treinamento e predição com base em big data.

    • Construção de matrizes de coocorrência de palavras, mineração de conjuntos de itens frequentes e detecção de documentos duplicados com base em um corpus.

  • Recomendações de anúncios: predição de taxas de cliques (CTRs) e taxas de conversão (CVRs).

Descrição do processo do MapReduce

Um programa MapReduce processa dados em duas etapas principais: uma etapa de map seguida por uma etapa de reduce. Você pode definir a lógica de processamento para essas etapas, mas ela deve seguir as convenções do framework MapReduce. O fluxo completo de processamento de dados do MapReduce é o seguinte:

  1. Dados de entrada: antes da operação de map, o sistema particiona os dados de entrada em blocos de tamanhos iguais. Cada bloco de dados serve como entrada para um map worker. Isso permite que vários map workers operem simultaneamente.

  2. Etapa de map: Cada map worker lê e processa seu bloco de dados atribuído. Em seguida, atribui uma chave a cada registro de saída. Essa chave determina qual reduce worker receberá o registro.

    Nota

    O sistema envia os registros de dados com a mesma chave para o mesmo reduce worker. Um único reduce worker pode receber registros de dados com chaves diferentes.

  3. Fase de shuffle: antes da fase de reduce, o framework MapReduce classifica os dados por chave, agrupando os dados com a mesma chave. Especifique uma Combine Operation (Combiner) para que o framework chame o Combiner e agregue dados com a mesma chave. Você pode personalizar a lógica do Combiner. No MaxCompute, ao contrário do protocolo clássico do framework MapReduce, os parâmetros de entrada e saída do Combiner devem ser consistentes com os da fase de reduce. Essa parte do processo também é comumente chamada de Shuffle.

  4. Etapa de reduce: o sistema envia os registros de dados com a mesma chave para o mesmo reduce worker. Um único reduce worker pode receber dados de vários map workers. Cada reduce worker executa uma operação de reduce nos registros de dados com a mesma chave, convertendo-os em um único valor.

  5. Dados de saída: o sistema gera os resultados.

Nota

Esta seção fornece uma breve introdução ao framework MapReduce. Para obter mais informações, consulte Function Introduction.

A seção a seguir usa o exemplo WordCount para explicar os conceitos de cada etapa no MaxCompute MapReduce.

Considere um arquivo chamado a.txt em que cada linha contenha um único dígito. O objetivo é contar o número de vezes que cada dígito aparece. Nesse contexto, cada dígito é uma 'palavra' e o número de vezes que aparece é a 'contagem'. Para isso, o MaxCompute MapReduce segue o processo mostrado na figura a seguir.

Procedure

  1. Dados de entrada: o sistema particiona o arquivo de texto. Os dados de cada partição servem como entrada para um map worker.

  2. Etapa de map: o map worker processa a entrada. Para cada dígito recebido, ele define a contagem como 1 e gera um par <Palavra, Contagem>. A palavra serve como chave para os dados de saída.

  3. Shuffle > Combinação e classificação: no início da fase de shuffle, o sistema classifica a saída de cada map worker por chave (a palavra). Após a classificação, ele executa uma operação de combiner. O combiner agrega as contagens para a mesma chave (palavra) para formar um novo par <Palavra, Contagem>. Esse processo recebe o nome de combinação e classificação.

  4. Shuffle > Atribuição aos reducers: no final da fase de shuffle, o sistema envia os dados aos reducers. Depois que um reduce worker recebe os dados, ele os classifica novamente por chave.

  5. Etapa de reduce: Cada reduce worker processa os dados usando a mesma lógica do combiner. Ele agrega as contagens para a mesma chave (palavra) para obter o resultado final.

  6. Dados de saída.

Nota

O MaxCompute armazena todos os dados em tabelas. Portanto, a entrada e a saída do MaxCompute MapReduce devem ser tabelas. Você não pode especificar o formato de saída. O MaxCompute não fornece interfaces semelhantes a um sistema de arquivos.

Limites

Extended MapReduce (MR2)

Em comparação com o MapReduce nativo do MaxCompute, a forma como você escreve funções como Map e Reduce no MR2 é praticamente a mesma. A principal diferença está na execução dos jobs. Para ver um exemplo, consulte Pipeline Example.

Contexto do modelo MR2

O modelo tradicional do MapReduce exige que o sistema armazene os dados resultantes em um sistema de arquivos distribuído, como o Hadoop Distributed File System (HDFS) ou uma tabela do MaxCompute, após cada rodada de operações do MapReduce. Um fluxo de trabalho do MapReduce geralmente consiste em vários jobs do MapReduce. Após a conclusão de cada job, o sistema precisa gravar os dados intermediários em disco. No entanto, uma tarefa de map subsequente pode precisar ler esses dados apenas uma vez antes da próxima fase de shuffle. Esse processo cria operações de E/S de disco redundantes.

A lógica de computação e agendamento do MaxCompute suporta modelos de programação mais complexos. Para lidar com essa situação, o MaxCompute permite executar uma operação de reduce diretamente após outra operação de reduce, sem uma operação de map intermediária. Portanto, o MaxCompute fornece um modelo de MapReduce estendido que suporta o encadeamento de várias operações de reduce após uma operação de map, como Map > Reduce > Reduce.

Comparação com Hadoop Chain Mapper e ChainReducer

O Hadoop Chain Mapper e o ChainReducer também oferecem suporte a operações semelhantes de map ou reduce em série. No entanto, eles são fundamentalmente diferentes do modelo de MapReduce estendido (MR2) do MaxCompute.

O Chain Mapper e o ChainReducer baseiam-se no modelo tradicional do MapReduce. Eles permitem apenas adicionar uma ou mais operações de map após a operação original de map ou reduce. Você não pode adicionar uma operação de reduce. A vantagem dessa abordagem é que você pode reutilizar a lógica de negócios do mapper existente para dividir uma operação de map ou reduce em várias etapas de mapper. No entanto, isso não altera fundamentalmente os modelos subjacentes de agendamento e E/S.