En este documento, se describe cómo crear y ejecutar un trabajo que no está programado hasta que se completen o se produzcan errores en trabajos específicos. Para obtener más información sobre los estados de los trabajos, consulta Descripción general de la creación y ejecución de trabajos.
Si tienes una carga de trabajo con diferentes requisitos de recursos, considera usar trabajos dependientes para crear una cadena automatizada de trabajos que usen VMs independientes. Por ejemplo, separa los tipos de VMs que se usan para operaciones de baja demanda (como la preparación de datos) y las operaciones intensivas en procesamiento (como el procesamiento de datos). Si usas trabajos dependientes para optimizar el consumo de recursos, puedes reducir los costos y el uso de la cuota.
Antes de comenzar
- Si nunca antes usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Editor de trabajos por lotes (
Restricciones
Los trabajos dependientes tienen las siguientes restricciones:
Un trabajo dependiente puede tener hasta cuatro dependencias. Cada dependencia debe contener un nombre de trabajo único y uno de los siguientes estados obligatorios:
SUCCEEDED
: Se realizó correctamente.FAILED
: con erroresFINISHED
: Si se realizó correctamente o no
Cuando creas un trabajo dependiente, deben existir todos sus trabajos de dependencia.
Un trabajo dependiente no puede ingresar al estado programado (
SCHEDULED
) hasta que cada trabajo de dependencia haya ingresado al estado requerido. Si se vuelve imposible que un trabajo de dependencia ingrese a su estado requerido, el trabajo dependiente falla de inmediato sin programarse.
Crea un trabajo dependiente
Puedes crear un trabajo que dependa de los siguientes métodos:
- En Google Cloud CLI, usa el comando
gcloud alpha batch jobs submit
. - Para la API de Batch, usa el método
jobs.create
de v1alpha.
Para especificar que una tarea es dependiente, incluye el campo dependencies[].items
, que admite una o más dependencias especificadas como pares clave-valor, en el cuerpo principal del archivo JSON:
"dependencies": [
{
"items": {
"DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
}
}
]
Reemplaza lo siguiente:
DEPENDENCY_JOB_NAME
: Es el nombre de un trabajo de dependencia, que debe alcanzar su estado requerido antes de que se pueda programar.REQUIRED_STATE
: Es el estado requerido para el trabajo de dependencia correspondiente, que debe serSUCCEEDED
,FAILED
oFINISHED
.
Por ejemplo, un trabajo dependiente con tres dependencias puede tener un archivo de configuración JSON similar al siguiente:
{
"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"
}
}
]
}
¿Qué sigue?
- Si tienes problemas para crear o ejecutar una tarea, consulta Solución de problemas.
- Obtén más información para ver trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.