Os jobs do MaxCompute MapReduce estão sujeitos às limitações descritas a seguir. A execução falhará caso algum desses limites seja excedido.
As restrições dividem-se em cinco categorias:
Memória: capacidade máxima de memória disponível para uma única instância map ou reduce.
Quantidade: tetos aplicáveis a instâncias, entradas, saídas, resources, contadores e tentativas de repetição.
Tamanho: restrições de tamanho para resources, divisões de dados e colunas do tipo string.
Tempo: duração máxima permitida para um worker permanecer ativo sem ler, gravar ou enviar heartbeat.
Tipo de dado: tipos de campo compatíveis com table resources.
Tabela de limites
|
Limite |
Valor |
Categoria |
Parâmetro de configuração |
Padrão |
Configurável |
|
Memória por instância |
256 MB–12 GB |
Memória |
|
2.048 MB + 1.024 MB |
Sim |
|
Resources por job |
256 |
Quantidade |
— |
— |
Não |
|
Entradas por job |
1.024 |
Quantidade |
— |
— |
Não |
|
Saídas por job |
256 |
Quantidade |
— |
— |
Não |
|
Tabelas distintas em todas as entradas |
64 |
Quantidade |
— |
— |
Não |
|
Contadores personalizados por job |
64 |
Quantidade |
— |
— |
Não |
|
Instâncias map por job |
1–100.000 |
Quantidade |
|
Calculado com base no tamanho da divisão |
Sim |
|
Instâncias reduce por job |
0–2.000 |
Quantidade |
|
1/4 das instâncias map |
Sim |
|
Tentativas por instância com falha |
3 |
Quantidade |
— |
— |
Não |
|
Depuração local: instâncias map |
2 (padrão), máx. 100 |
Quantidade |
— |
2 |
Não |
|
Depuração local: instâncias reduce |
1 (padrão), máx. 100 |
Quantidade |
— |
1 |
Não |
|
Depuração local: registros baixados por entrada |
100 (padrão), máx. 10.000 |
Quantidade |
— |
100 |
Não |
|
Leituras repetidas de um mesmo resource por instância |
64 |
Quantidade |
— |
— |
Não |
|
Tamanho total de resources por job |
2 GB |
Tamanho |
— |
— |
Não |
|
Tamanho da divisão |
≥ 1 |
Tamanho |
|
256 MB |
Sim |
|
Comprimento do conteúdo da coluna STRING |
8 MB |
Tamanho |
— |
— |
Não |
|
Timeout de execução do worker |
1–3.600 segundos |
Tempo |
|
600 segundos |
Sim |
|
Tipos de campo suportados em table resources |
BIGINT, DOUBLE, STRING, DATETIME, BOOLEAN |
Tipo de dado |
— |
— |
Não |
Detalhes dos limites
Memória por instância
Cada instância map ou reduce possui dois pools de memória: memória do framework (padrão de 2.048 MB) e memória heap da Java Virtual Machine (JVM) (padrão de 1.024 MB). A soma total deve permanecer dentro da faixa de 256 MB a 12 GB. Ao ajustar a alocação de memória, modifique tanto odps.stage.mapper.mem quanto odps.stage.mapper.jvm.mem (ou os equivalentes para reducer).
Resources por job
Um único job pode referenciar até 256 resources. Cada tabela e cada arquivo compactado conta como um resource. O tamanho combinado de todos os resources referenciados não pode ultrapassar 2 GB.
Entradas e saídas
Cada partição individual é considerada uma entrada, sendo o limite máximo de 1.024 entradas.
O número total de tabelas distintas entre todas as entradas não pode exceder 64.
A quantidade máxima de saídas permitida é de 256.
Contadores personalizados
É possível definir até 64 contadores personalizados por job. Nem o Group Name nem o Counter Name podem conter o caractere cerquilha (#), e o comprimento combinado de ambos não deve ultrapassar 100 caracteres.
Instâncias map e reduce
O framework calcula automaticamente o número de instâncias map com base no tamanho da divisão. Para substituir esse comportamento padrão, defina odps.stage.mapper.num com um valor entre 1 e 100.000. Caso nenhuma tabela de entrada seja especificada, a definição explícita desse parâmetro é obrigatória.
Por padrão, a quantidade de instâncias reduce corresponde a um quarto do número de instâncias map. Defina odps.stage.reducer.num com qualquer valor entre 0 e 2.000 para alterar essa proporção. Vale ressaltar que uma instância reduce pode processar um volume de dados significativamente maior que uma instância map, o que pode tornar a fase de redução mais lenta.
Tentativas de repetição
O sistema tenta reexecutar uma instância map ou reduce com falha até três vezes. Certas exceções não permitem repetição e causam a falha imediata do job.
Modo de depuração local
No modo de depuração local, aplicam-se os seguintes limites:
Instâncias map: padrão de 2, máximo de 100.
Instâncias reduce: padrão de 1, máximo de 100.
Registros baixados por entrada: padrão de 100, máximo de 10.000.
Timeout de execução do worker
Um worker atinge o timeout quando permanece inativo — sem ler ou gravar dados e sem enviar heartbeat via context.progress() — por um período superior ao tempo limite configurado. O timeout padrão é de 600 segundos (faixa ajustável: 1–3.600 segundos). Para jobs com longos intervalos de processamento entre operações de I/O, defina odps.function.timeout com um valor mais alto.
Limites de recursos
|
Recurso |
Suportado |
|
Leitura de dados do OSS (Object Storage Service) |
Não |
|
Novos tipos de dados introduzidos no MaxCompute V2.0 |
Não |
|
Execução de jobs MapReduce em projetos com schema habilitado |
Não |
Quando uma tarefa MapReduce referencia um table resource, o sistema reporta erro se a tabela contiver campos com tipos de dados não suportados.
Ao atualizar um projeto para suportar schemas, os jobs MapReduce existentes nesse projeto deixarão de ser executados.