Este documento descreve como criar e executar um job que não é programado até que jobs específicos sejam concluídos ou falhem. Para saber mais sobre os estados de job, consulte Visão geral da criação e execução de jobs.
Se você tiver uma carga de trabalho com requisitos de recursos variáveis, considere usar jobs dependentes para criar uma cadeia automatizada de jobs que usam VMs separadas. Por exemplo, separe os tipos de VMs usadas para operações de baixa demanda (como preparação de dados) e operações com uso intenso de computação (como processamento de dados). Ao usar jobs dependentes para otimizar o consumo de recursos, é possível reduzir custos e o uso de cotas.
Antes de começar
- Se você nunca usou o Batch, leia Começar a usar o Batch e ative o serviço concluindo os pré-requisitos para projetos e usuários.
-
Para receber as permissões necessárias para criar um job, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor de jobs em lote (
roles/batch.jobsEditor
) no projeto -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço do job, que por padrão é a conta de serviço padrão do Compute Engine
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
-
Editor de jobs em lote (
Restrições
Os jobs dependentes têm as seguintes restrições:
Um job dependente pode ter até quatro dependências. Cada dependência precisa ter um nome de job exclusivo e um dos seguintes estados obrigatórios:
SUCCEEDED
: concluídoFAILED
: falhaFINISHED
: concluído ou com falha
Ao criar um job dependente, todos os jobs de dependência precisam existir.
Um job dependente não pode entrar no estado programado (
SCHEDULED
) até que cada job de dependência tenha entrado no estado necessário. Se for impossível para um job de dependência entrar no estado necessário, o job dependente vai falhar imediatamente sem ser programado.Assim como todos os jobs, um job dependente não pode entrar no estado programado (
SCHEDULED
) se exceder o tempo máximo de espera na fila. O Batch aplica esse limite para evitar que seus jobs fiquem desatualizados. Consequentemente, se você achar que o tempo restante necessário para a conclusão de qualquer um dos jobs de dependência pode exceder esse limite, faça uma ou mais das seguintes ações:- Se você ainda não criou um job de dependência, tente reduzir o tempo de execução esperado dele. Por exemplo, é possível aumentar o paralelismo da carga de trabalho ou limitar o tempo de execução de qualquer tarefa e executável que não precise ser concluído.
- Aguarde para criar o job dependente até que o tempo de execução esperado dos jobs de dependência seja menor que o limite.
Criar um job dependente
É possível criar um job dependente usando os seguintes métodos:
- Para a Google Cloud CLI, use o comando
gcloud alpha batch jobs submit
. - Para a API Batch, use o método
jobs.create
v1alpha.
Para especificar que um job é dependente, inclua o
campo dependencies[].items
,
que aceita uma ou mais dependências especificadas como pares de chave-valor, no
corpo principal do arquivo JSON:
"dependencies": [
{
"items": {
"DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
}
}
]
Substitua:
DEPENDENCY_JOB_NAME
: o nome de um job de dependência, que precisa atingir o estado necessário antes que o job dependente possa ser programado.REQUIRED_STATE
: o estado necessário para o job de dependência correspondente, que precisa serSUCCEEDED
,FAILED
ouFINISHED
.
Por exemplo, um job dependente com três dependências pode ter um arquivo de configuração JSON semelhante a este:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3
}
],
"dependencies": [
{
"items": {
"DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
"DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
"DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
}
}
]
}
A seguir
- Se você tiver problemas para criar ou executar um job, consulte Solução de problemas.
- Saiba como ver jobs e tarefas.
- Saiba mais sobre outras opções de criação de jobs.