Os jobs do MaxCompute MapReduce estão sujeitos aos limites a seguir. Exceder qualquer limite causa a falha do job.
Os limites se dividem em cinco categorias:
Memória — a memória máxima que uma única instância de map ou reduce pode usar
Quantidade — limites máximos para instâncias, entradas, saídas, recursos, contadores e tentativas
Tamanho — limites de tamanho para recursos, splits de dados e colunas STRING
Tempo — o tempo máximo que um worker pode executar sem ler, gravar ou enviar um heartbeat
Tipo de dado — os tipos de campo suportados em recursos de tabela
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 |
|
Recursos 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 de map por job |
1–100.000 |
Quantidade |
|
Calculado com base no tamanho do split |
Sim |
|
Instâncias de reduce por job |
0–2.000 |
Quantidade |
|
1/4 das instâncias de map |
Sim |
|
Tentativas por instância com falha |
3 |
Quantidade |
— |
— |
Não |
|
Depuração local: instâncias de map |
2 (padrão), máx. 100 |
Quantidade |
— |
2 |
Não |
|
Depuração local: instâncias de 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 recurso por instância |
64 |
Quantidade |
— |
— |
Não |
|
Tamanho total de recursos por job |
2 GB |
Tamanho |
— |
— |
Não |
|
Tamanho do split |
≥ 1 |
Tamanho |
|
256 MB |
Sim |
|
Comprimento do conteúdo da coluna STRING |
8 MB |
Tamanho |
— |
— |
Não |
|
Tempo limite de execução do worker |
1–3.600 segundos |
Tempo |
|
600 segundos |
Sim |
|
Tipos de campo suportados em recursos de tabela |
BIGINT, DOUBLE, STRING, DATETIME, BOOLEAN |
Tipo de dado |
— |
— |
Não |
Detalhes dos limites
Memória por instância
Cada instância de map ou reduce possui dois pools de memória: a memória do framework (padrão: 2.048 MB) e a memória heap da Java Virtual Machine (JVM) (padrão: 1.024 MB). A soma dos dois valores deve ficar no intervalo de 256 MB a 12 GB. Para ajustar a alocação de memória, defina tanto odps.stage.mapper.mem quanto odps.stage.mapper.jvm.mem (ou os equivalentes do reducer).
Recursos por job
Um único job pode referenciar até 256 recursos. Cada tabela e cada arquivo compactado contam como um recurso. O tamanho total de todos os recursos referenciados não pode exceder 2 GB.
Entradas e saídas
Cada partição conta como uma entrada. O total de entradas não pode exceder 1.024.
O total de tabelas distintas em todas as entradas não pode exceder 64.
O total de saídas não pode exceder 256.
Contadores personalizados
Um job pode ter até 64 contadores personalizados. O nome do grupo e o nome do contador não devem conter o sinal de número (#), e o comprimento combinado não pode exceder 100 caracteres.
Instâncias de map e reduce
O framework calcula o número de instâncias de map com base no tamanho do split. Esse é o comportamento padrão: o framework determina a quantidade automaticamente. Para alterar esse comportamento, defina odps.stage.mapper.num com um valor no intervalo de 1 a 100.000. Se nenhuma tabela de entrada for especificada, defina esse parâmetro explicitamente.
Por padrão, o número de instâncias de reduce equivale a um quarto do número de instâncias de map. Para alterar isso, defina odps.stage.reducer.num com qualquer valor no intervalo de 0 a 2.000. Uma instância de reduce pode processar uma quantidade significativamente maior de dados que uma instância de map, o que pode deixar a fase de reduce mais lenta.
Tentativas
O sistema executa novamente uma instância de map ou reduce com falha até três vezes. Algumas exceções não permitem novas tentativas e causam a falha imediata do job.
Modo de depuração local
No modo de depuração local:
Instâncias de map: padrão 2, máx. 100
Instâncias de reduce: padrão 1, máx. 100
Registros baixados por entrada: padrão 100, máx. 10.000
Tempo limite de execução do worker
Um worker atinge o tempo limite quando não lê nem grava dados, nem envia um heartbeat por meio de context.progress() por um período superior ao tempo limite configurado. O tempo limite padrão é de 600 segundos (intervalo: 1 a 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 do MapReduce em projetos com schema habilitado |
Não |
Quando uma tarefa do MapReduce referencia um recurso de tabela, ocorre um erro se a tabela contiver campos de tipos de dados não suportados.
Se você atualizar um projeto para support schemas, não é mais possível executar os jobs do MapReduce existentes nesse projeto.