Ce document décrit le processus d'exécution et les options de création de jobs. Les jobs par lot vous permettent d'exécuter des charges de travail de traitement par lot Google Cloud. Pour en savoir plus sur les composants d'un job et sur les conditions préalables à l'utilisation de Batch, consultez Premiers pas avec Batch
Fonctionnement de la création et de l'exécution de jobs
Pour utiliser Batch, vous devez créer un job qui spécifie votre charge de travail et ses exigences, puis l'exécute automatiquement.
Le processus de création et d'exécution des jobs est décrit en détail. dans les sections suivantes:
- Cycle de vie d'une tâche: comprendre les états d'avancement d'une tâche de leur création à leur suppression.
- Mise en file d'attente et planification des tâches: comprenez facteurs affectant le temps nécessaire au démarrage d'un job.
- Exécution de la tâche: découvrez comment les tâches d'une tâche s'exécutent pendant l'exécution.
Cycle de vie des jobs
Cette section décrit le cycle de vie d'un job et ses tâches depuis sa création jusqu'à leur suppression.
Pour chaque charge de travail que vous souhaitez exécuter sur Batch, vous devez effectuer les tâches suivantes : processus de base suivant:
- Créer un job:vous définissez la charge de travail que vous souhaitez exécuter en spécifiant un les exécutables, les tâches et toute autre condition requise. Les détails de de création d'un job sont présentées Options de création de tâche de ce document.
- Contrôlez la tâche et dépannez-la:une fois la tâche créée, l'icône est automatiquement mise en file d'attente, planifiée et exécutée sur le ressources. Vous pouvez afficher les détails d'un job créé ou de n'importe quelle tâche pour voir l'état actuel. Lorsqu'un job est en cours d'exécution ou terminé, vous pouvez également de surveiller et d'analyser le job à l'aide de journaux. Si un job échoue, vous pouvez résoudre à l'aide de messages d'erreur, d'événements d'état ou de journaux pour diagnostiquer le problème avant de recréer le job.
- Supprimer ou exporter la tâche:les journaux d'un job sont automatiquement conservées et supprimées conformément à la règle de conservation de Cloud Logging. Les autres informations d'un job restent disponibles dans Batch. jusqu'à ce que vous ou Google Cloud les supprimiez. Google Cloud supprime automatiquement une tâche 60 jours après son achèvement. Avant cela, vous avez la possibilité de supprimer le job vous-même ou, si vous devez conserver les informations, vous pouvez exporter le job avant qu'il ne soit supprimé.
Une fois que vous avez créé un job, il passe par les états suivants:
- Queued (
QUEUED
) (en file d'attente):la requête de tâche a été acceptée et est en attente. dans la file d'attente. Le job reste dans la file d'attente jusqu'à ce que les ressources requises disponibles et les emplois qui le prévoyaient ont été évalués. - Planifiée (
SCHEDULED
) : la tâche a été sélectionnée dans la file d'attente. et les ressources sont en cours d'allocation. En cours d'exécution (
RUNNING
) : les ressources pour le job ont été créées avec succès et ses tâches peuvent commencer à s’exécuter.Lorsqu'un job est en cours d'exécution, chacune de ses tâches progresse les états suivants:
- En attente (
PENDING
) : la tâche est en attente de l'exécution d'une VM. - Attribuée (
ASSIGNED
) : une VM sur laquelle la tâche a été attribuée - En cours d'exécution (
RUNNING
) : la tâche est en cours d'exécution sur une VM. - Une tâche se termine dans l'un des états suivants:
<ph type="x-smartling-placeholder">
- </ph>
- Réussie (
SUCCEEDED
) : la tâche a réussi, car chacune de ses exécutables ont réussi (un code de sortie sur zéro) ou ont été marqués comme non critiques à l'aide des ignorer le champ d'état de sortie (ignoreExitStatus
). - Échec (
FAILED
) : la tâche a échoué parce qu'au moins une de ses exécutables critiques échouaient (affichage d'un code de sortie différent de zéro).
- Réussie (
- En attente (
Une tâche se termine dans l'un des états suivants:
- Réussite (
SUCCEEDED
) : toutes les tâches du job ont réussi. - Échec (
FAILED
) : au moins une tâche a échoué.
- Réussite (
Pour en savoir plus, consultez états des tâches et états des tâches dans la documentation de référence.
Mise en file d'attente et planification des jobs
En règle générale, les jobs sont plus susceptibles de s'exécuter et de se terminer plus tôt et ne nécessite que quelques ressources communes. Pour les exemples de jobs de la documentation Batch, qui sont généralement de très petite taille et utilisent un minimum de ressources, il est possible que leur exécution se termine quelques minutes.
Plus précisément, le temps nécessaire pour terminer la mise en file d'attente et la planification d'un job varie pour différents postes et à différents moments, en fonction des facteurs suivants:
Disponibilité des ressources de job: la disponibilité des ressources requises pour le job dans les limites autorisées emplacements.
Tout d'abord, un job ne peut pas s'exécuter si vous spécifiez des ressources ne sont pas proposées à cet emplacement. Dans ce cas, le job échoue avec Une erreur de disponibilité de zone.
Deuxièmement, une tâche est plus susceptible d'être retardée ou d'échouer si les ressources requises sont en faible capacité par rapport à la demande actuelle, en raison erreurs de disponibilité des ressources. Votre job peut donc s'exécuter plus tôt, si vous en avez besoin moins à des ressources plus courantes et n'empêchent pas l'exécution du job toutes les zones d'une région.
Pour en savoir plus sur les ressources associées à une tâche, consultez la section Exécution du job dans ce document. Pour en savoir plus sur les établissements pour un job Batch et ses ressources, consultez la Zones géographiques.
Job priority (Priorité de la tâche) : la priorité d'une tâche par rapport aux priorités de d'autres emplois dans votre projet.
Vous pouvez éventuellement spécifier la priorité d'un job en incluant le paramètre Option
--priority
pour gcloud CLI ou le champ JSONpriority
. Vous pouvez définir la priorité d'une tâche sous la forme d'un chiffre compris entre0
(priorité la plus faible) et99
(priorité la plus élevée). Définir une valeur plus élevée peut permettre à un job de s'exécuter plus tôt que celui ayant une priorité inférieure dans votre projet.Si vous ne configurez pas la priorité d'une tâche, le paramètre par défaut est le priorité la plus faible :
0
. Si deux jobs en file d'attente ont la même priorité, le job créé en premier a la priorité la plus élevée.Quotas et limites:seuils fixés par votre projet pour les ressources et les requêtes Google Cloud.
Une tâche ne peut pas être exécutée si elle dépasse une limite ou le quota de votre projet pour l'une des les ressources ou les requêtes requises. Dans ce cas, Batch peut retarder un job et le relancer ultérieurement. la tâche et d'afficher une erreur associée.
Vous pouvez éviter les retards et les erreurs liés à votre job en créant des jobs qui respecter toutes les limites applicables et vous assurer que votre projet dispose le quota approprié. Pour en savoir plus, consultez Quotas et limites applicables aux lots :
Exécution du job
Le temps nécessaire à l'exécution d'un job peut varier en fonction de la planification des tâches et les ressources du job.
Planification des tâches
Lorsqu'un job s'exécute, ses tâches sont planifiées en fonction
Champ de règle de planification (schedulingPolicy
),
qui vous permet de spécifier l'une des options suivantes:
- Dès que possible (
AS_SOON_AS_POSSIBLE
) (par défaut): s'exécutent dès que des ressources sont disponibles et peuvent s'exécuter en parallèle. Le nombre de tâches exécutées simultanément dépend des tâches parallèles par VM autorisées par les ressources du job et les autres options de configuration, comme expliqué dans la section Ressources relatives aux tâches de ce document. - Dans l'ordre (
IN_ORDER
): les tâches s'exécutent une par une en augmentant ordre d'index.
Ressources du job
Chaque job Batch s'exécute sur un groupe d'instances géré (MIG) régional, c'est-à-dire un groupe d'un ou de plusieurs Les instances de machines virtuelles (VM) Compute Engine situées chacune dans l'un de les zones incluses. Chaque VM dispose d'un matériel dédié Cœurs de processeur (en particulier les processeurs virtuels) et la mémoire, ce qui affecte les performances et un disque de démarrage, qui stocke un système d'exploitation l'image système (OS) et des instructions pour exécuter votre job.
Pendant l'exécution d'un job, Batch crée et supprime les ressources qui répondent à vos spécifications. Lorsque vous créez un job, vous configurez ses ressources en spécifiant ce qui suit:
Vous devez spécifier les ressources de calcul (vCPU, mémoire, (si nécessaire) un espace de stockage supplémentaire sur le disque de démarrage, nécessaire à l'exécution de chaque tâche. sauf si les valeurs par défaut sont suffisantes. Pour en savoir plus, consultez les Champ de calcul "resource resources per task (
computeResource
)" et des sous-champs.Si vous le souhaitez, vous pouvez également spécifier les types de VM à utiliser et des pour chaque VM, comme les GPU et les volumes de stockage. Si vous ne spécifier ces options, Batch sélectionne les types compatibles des VM et n'ajoute aucune ressource supplémentaire. Pour en savoir plus, consultez les Champ des ressources d'instance de VM (
instances[]
) et des sous-champs.
Le nombre de VM et le nombre de tâches pouvant être exécutées simultanément
sur chaque VM varient en fonction du job, en fonction de la planification des tâches et
sur la configuration matérielle requise. Si vous spécifiez l'exécution des tâches d'un job
IN_ORDER
, le job comporte une VM et n'exécute qu'une seule tâche à la fois. Sinon,
si les tâches d'un job exécutent AS_SOON_AS_POSSIBLE
, vous pouvez estimer
le nombre de VM et le nombre de tâches simultanées à l'aide de la formule suivante:
\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]
Cette formule a les valeurs suivantes:
- \({vmsPerJob}\): nombre maximal de VM pour une tâche. Nombre réel de VM créés pour une tâche peuvent être inférieurs à cette valeur. Par exemple, si Batch estime qu'il sera plus rapide d'exécuter un job sur moins de ressources que d'attendre d'avoir plus de ressources. Cette valeur est également limitée limites du nombre de VM simultanées par job.
- \({taskCount}\): nombre total de tâches pour la tâche, que vous définissez
à l'aide du champ du nombre de tâches (
taskCount
). \({parallelTasksPerVM}\): nombre maximal de tâches pouvant être exécutées sur une VM simultanément.
Cette valeur est déterminée par tous les éléments critères:
La valeur minimale est de 1 tâche.
La valeur maximale est la plus petite des 20 tâches et, si elle est définie, la valeur du champ Nombre maximal de tâches parallèles par tâche (
parallelism
).Si le champ "Nombre maximal de tâches parallèles par VM (
taskCountPerNode
)" est définie, cette valeur est utilisée.Sinon, si
taskCountPerNode
n'est pas défini, la commande décide d'une valeur en divisant le nombre total ressources de calcul (en particulier les processeurs virtuels) par VM dans la quantité requises pour chaque tâche:\[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]
Cette formule a les valeurs suivantes:
\({vcpusPerVm}\): nombre total de processeurs virtuels par VM, soit déterminé par le type de machine des VM de votre job.
\({vcpusPerTask}\): nombre de processeurs virtuels par tâche, que est déterminée en convertissant les unités Champ vCPU par tâche (
cpuMilli
).
Options de création d'emploi
Créer et exécuter une tâche de base explique les y compris la façon de définir un exécutable à l'aide d'un script ou et comment configurer des variables d'environnement prédéfinies et personnalisées.
Après avoir compris les principes fondamentaux de la création d'emplois, envisagez de créer une tâche qui utilise une ou plusieurs des options de configuration supplémentaires suivantes:
Contrôler l'accès à une tâche:
Contrôler l'accès à une tâche à l'aide d'un compte de service personnalisé explique comment spécifier le compte de service d'un job, qui influence et les applications auxquelles les VM d'un job peuvent accéder. Si vous ne ou spécifiez un compte de service personnalisé. Par défaut, les jobs utilisent Compte de service Compute Engine par défaut.
Présentation de la mise en réseau explique quand et comment personnaliser la configuration réseau d'un job, y compris la spécification réseau du job, en bloquant les connexions externes protéger les données et les ressources à l'aide de VPC Service Controls.
Protéger les données sensibles à l'aide de Secret Manager explique comment définir de façon sécurisée les données sensibles, comme les données des variables d'environnement et des identifiants de connexion à l'aide Secrets Secret Manager pour spécifier des informations chiffrées lorsque vous créez un job.
Configurez des options supplémentaires pour une tâche:
Configurer la communication des tâches à l'aide d'une bibliothèque MPI explique comment configurer un job avec des tâches interdépendantes qui communiquent entre elles sur différentes VM à l'aide d'une interface de transmission de messages (MPI). Un cas d'utilisation courant de l'IMPI est le couplage fort, de calcul hautes performances (HPC, High Performance Computing).
Personnalisez les ressources sur lesquelles un job s'exécute:
Définir les ressources de tâche à l'aide d'un modèle d'instance de VM explique comment spécifier un modèle de VM Compute Engine pour définir ressources du job lorsque vous le créez.
Utiliser des GPU pour une tâche : explique comment définir qui utilise un ou plusieurs processeurs graphiques (GPU). Utilisation courante pour les jobs qui utilisent des GPU, par exemple pour le traitement intensif de données de machine learning (ML).
Utiliser des volumes de stockage pour un job explique comment définir une tâche pouvant accéder à un ou plusieurs volumes de stockage externes. Les options de stockage incluent les disques persistants nouveaux ou existants, les nouveaux SSD locaux, des buckets Cloud Storage existants et un système de fichiers réseau existant (NFS) comme un partage de fichiers Filestore.
Présentation de l'environnement d'OS de VM explique quand et comment personnaliser l'environnement du système d'exploitation (OS) d'une VM pour une tâche, y compris son une image d'OS de VM et des disques de démarrage.
Optimisez différents aspects d'une tâche:
Améliorez la surveillance et l'analyse:
L'article Écrire des journaux de tâches explique comment configurer les exécutables d'une tâche pour écrire des journaux de tâches. L'écriture de journaux de tâches vous permet d'obtenir des informations personnalisées dans Cloud Logging, ce qui facilite la tâche analyser et dépanner.
Configurer des événements d'état personnalisés explique comment configurer des événements d'état personnalisés pour l'état et des exécutables. Les événements d'état personnalisés vous permettent de décrire qui se produisent pour les exécutables et qui apparaissent lorsque vous Afficher l'historique des événements d'état d'une mission ce qui peut faciliter l'analyse et le dépannage des jobs.
Activer les notifications d'état explique comment configurer un job pour envoyer des messages Pub/Sub des notifications sur son état, que vous pouvez stocker dans une table BigQuery. Avant de lire ce document, configurez votre projet pour Surveiller l'état des jobs à l'aide des notifications Pub/Sub et de BigQuery en premier.
Activer les métriques de l'agent Ops explique comment configurer un job pour installer automatiquement l'agent Ops. L'agent Ops collecte des métriques supplémentaires les performances et l'utilisation des ressources d'un job. Pour en savoir plus sur l'affichage et l'utilisation des métriques de ressources, voir Surveillez et optimisez les ressources de tâches en affichant les métriques.
Automatiser les nouvelles tentatives d'exécution de tâches explique comment relancer automatiquement les tâches d'un job après tout en cas d'échecs spécifiés. Les nouvelles tentatives automatiques la difficulté à résoudre les problèmes et la durée d'exécution globale nécessaire pour les jobs qui rencontrent des erreurs temporaires. Par exemple, utilisez des tentatives automatiques pour un job exécuté sur les VM Spot, qui offrent des remises importantes, mais qui ne sont pas toujours disponibles et peuvent être préemptées à tout moment.
Cohéberger des VM pour réduire la latence explique comment réduire la latence du réseau entre les VM d'un job en obligeant les VM à être physiquement proches les unes des autres. Cet avantage en termes de performances peut être particulièrement utile pour les tâches ont des communications réseau fréquentes entre les VM, telles que des tâches à l'aide de bibliothèques MPI.
Assurer la disponibilité des ressources à l'aide des réservations de VM explique comment configurer un job peuvent s'exécuter sur des VM réservées. Utilisation des réservations Les VM peuvent vous aider à réduire la durée de planification d'un job, éviter les erreurs de disponibilité des ressources ; et optimiser les coûts.
Utiliser le streaming d'images explique comment réduire le temps de démarrage du job en diffusant des flux de données des images provenant d'Artifact Registry.
Utilisez des services supplémentaires pour créer et exécuter des jobs:
Orchestrer des jobs à l'aide de Workflows explique comment utiliser les workflows pour exécuter les tâches les tâches dans un ordre que vous définissez à l'aide du Syntaxe des workflows.
Orchestrer des tâches à l'aide de Nextflow explique comment : exécuter un job par lot via un Nextflow, qui pour orchestrer des workflows bio-informatiques.
Orchestrer des tâches à l'aide de dsub explique comment : exécuter un job par lot via un
dsub
pour orchestrer des workflows de traitement par lot sur les services Google Cloud.Créer et exécuter des jobs Batch à l'aide de Terraform et de Cloud Scheduler explique comment intégrer des jobs Batch à Terraform. Terraform vous permet de provisionner et gérer l'infrastructure en spécifiant dans des fichiers de configuration, qui peuvent être traités comme du code et stockés dans systèmes de contrôle des versions comme GitHub.
Étape suivante
Découvrez les principes de base de la création d'emploi: