Charges de travail par lots
IBM Cloud® Code Engine est une plateforme sans serveur entièrement gérée qui exécute vos charges de travail conteneurisées, y compris les charges de travail par lots ou les charges de travail d'application. Apprenez à exécuter des travaux par lots dans Code Engine
Que sont les charges de travail par lots?
Un job dans Code Engine exécute une ou plusieurs instances de votre code exécutable. Contrairement aux applications, qui traitent les demandes HTTP, les travaux sont conçus pour s'exécuter une fois et se terminer, de sorte que les ressources nécessaires à l'exécution de la charge de travail sont libérées.
Vous pouvez mettre à l'échelle des travaux par lots en définissant plusieurs instances. Les charges de travail peuvent être divisées en tâches parallèles afin de réduire le temps de calcul. Vous pouvez définir le travail à exécuter avec une nouvelle tentative automatique pour traiter les charges de travail défaillantes au sein d'une instance de travail. Vous pouvez déclencher des travaux par lots manuellement, à l'aide d'un programme et par événements, tels que des événements Object Storage.
Lorsque vous créez un travail, vous pouvez spécifier les informations de configuration de la charge de travail qui sont utilisées à chaque fois que le travail est exécuté.
Les charges de travail typiques des travaux par lots sont les suivantes
- Apprentissage du modèle de machine
- Analyse de fichiers, telle que l'analyse vocale ou la reconnaissance d'images
- Compression ou décompression de fichiers
- Archivage des informations
Lorsque vous créez un travail, vous pouvez spécifier les informations de configuration de charge de travail qui sont utilisées à chaque fois que le travail est exécuté.
Quel est le cycle de vie d'un travail par lots?
Lorsque vous soumettez un travail par lots, il s'exécute jusqu'à sa fin. Généralement, les travaux par lots extraient des données d'entrée, effectuent des travaux de calcul et stockent les résultats dans des magasins de données persistantes. Une fois le travail par lots terminé, les ressources utilisées pour exécuter le travail sont supprimées et aucun coût n'est encouru pour les ressources de secours.
Que sont les tableaux de tâches et les statuts de tableaux de tâches ?
La spécification du tableau des travaux fait partie du travail et de la configuration de l'exécution du travail. Un tableau d'emplois a deux fonctions :
- Il détermine le nombre d'instances simultanées qui sont lancées pour l'exécution du travail.
- Il permet au code utilisateur de déterminer la partie du travail que chaque instance doit effectuer en fonction de l'indice de tableau individuel qui lui est fourni.
Spécifier un tableau de tâches par la taille du tableau ou par un ensemble d'index de tableau :
-
Si vous spécifiez une taille de tableau avec une valeur n, le nombre d'instances démarrées pour l'exécution du travail est n. Chaque instance se voit attribuer un indice de tableau (0, 1, 2, et ainsi de suite jusqu'à n-1 ), à l'aide de la variable d'environnement
JOB_INDEX. La variable d'environnementJOB_ARRAY_SIZEa la valeur n, sauf si vous spécifiez une valeur particulière. -
Si vous spécifiez un ensemble d'un ou plusieurs index de tableau, le nombre d'instances démarrées correspond au nombre d'index. Chaque instance est dotée d'un des index spécifiés en utilisant la variable d'environnement
JOB_INDEX. La variable d'environnementJOB_ARRAY_SIZEest fixée au nombre d'index spécifiés, sauf si vous spécifiez une valeur particulière.
La variable d'environnement JOB_ARRAY_SIZE est également disponible pour le code utilisateur et est, par défaut, fixée au nombre d'index.
Si une instance se termine avec un code de retour positif, le statut de l'index du tableau associé devient "completed". Sinon, Code Engine démarre une nouvelle instance pour le même index, si le nombre de tentatives configuré n'a pas encore été dépassé. Si une instance échoue et qu'aucune autre tentative n'est autorisée, l'index du tableau associé passe à l'état "failed".
Quelles sont les principales fonctionnalités de l'utilisation des travaux par lots Code Engine ?
Consultez les rubriques suivantes pour en savoir plus sur l'utilisation des travaux par lots dans Code Engine.
- Isolement
- Journalisation
- Mise en file d'attente
- Retries
- Exécution de travaux par lots
- Mise à l'échelle
- Statut
- Soumission de travaux par lots similaires
- Déclenchement de travaux par lots avec des événements
Isolement
Code Engine est un service régional à service partagé dans lequel les titulaires partagent le même réseau et la même infrastructure de calcul. Le réseau et l'infrastructure de calcul sont des ressources partagées et certains composants de gestion sont utilisés conjointement par tous les titulaires. Toutefois, les locataires et leurs charges de travail sont isolés les uns des autres à l'aide de projets Code Engine. Code Engine empêche la communication entre les projets, ce qui permet d'isoler vos applications dans un environnement à service partagé. En outre, des contrôles d'accès sont effectués au niveau d'une ressource pour permettre uniquement aux utilisateurs autorisés d'effectuer certaines opérations sur des ressources de projet, telles que des applications ou d'autres charges de travail Code Engine.
Pour plus d'informations sur l'isolement des charges de travail, voir Isolement des charges de travailCode Engine.
Journalisation
Lorsque vous travaillez avec des tâches Code Engine dans la console avec la journalisation activée, les journaux sont transmis à une instance de service IBM Cloud Logs qui est associée à votre projet Code Engine. Dans l'instance de service IBM Cloud Logs, les journaux sont indexés, ce qui permet d'effectuer une recherche en texte intégral dans tous les messages générés et d'effectuer des requêtes basées sur des champs spécifiques. Voir Obtention des journaux pour les travaux.
Les informations sur les événements système peuvent également être utiles pour résoudre les problèmes lors de l'exécution des travaux. Vous pouvez afficher des informations sur les événements système depuis l'interface de ligne de commande. Voir Obtention d'informations sur les événements système pour les travaux.
Pour plus d'informations, voir Affichage des journaux.
Mise en file d'attente
Les travaux par lots soumis sont automatiquement mis en file d'attente et sont en attente jusqu'à leur répartition. Les travaux par lots sont exécutés en fonction des ressources de calcul disponibles définies par votre projet Code Engine.
Les travaux par lots dont le statut est pending peuvent être supprimés de la file d'attente. Vous pouvez surveiller les travaux par lots en attente, en cours d'exécution ou terminés à l'aide de la console ou de l'interface de
ligne de commande Code Engine.
Nombre de nouvelles tentatives
Chaque instance de travail s'exécute jusqu'à son achèvement. Toutefois, le code de charge de travail peut rencontrer une erreur lors de l'exécution du travail. Lorsqu'une instance de travail se termine avec un code retour différent de zéro, Code Engine redémarre l'instance de travail. Avec Code Engine, vous pouvez spécifier de limiter le nombre de nouvelles tentatives pour éviter le redémarrage des instances de travail ayant échoué.
Exécution de travaux par lots
Que votre code existe en tant que source dans un fichier local ou dans un dépôt Git, ou que votre code soit une image de conteneur qui existe dans un registre public ou privé, Code Engine vous offre un moyen rationalisé d'exécuter votre code en tant que tâche.
Vous pouvez créer et exécuter des travaux par lots dans Code Engine de l'une des manières suivantes:
- Exécuter une image de conteneur existante. Créez un travail et fournissez une référence à votre image à utiliser lorsque vous soumettez le travail. Pour un exemple, voir Créer et exécuter un travail.
- Commencez par le code source. Si vous commencez avec le code source qui se trouve dans un référentiel Git ou sur votre poste de travail local, vous pouvez pointer vers l'emplacement de votre source et Code Engine s'occupe de la génération de l'image pour vous. Voir Création d'un travail à partir du code source du référentiel et Création d'un travail à partir du code source local.
Pour plus d'informations, voir Utilisation des travaux.
Mise à l'échelle
Un travail dans Code Engine (travail par lots) comprend une ou plusieurs instances de travail. Alors que les instances de travail s'exécutent indépendamment les unes des autres, elles exécutent le même code. Supposons que vous disposiez d'une
base de données avec 100 enregistrements à analyser. Vous pouvez exécuter votre travail de sorte que chaque instance de travail analyse 10 enregistrements chacun. Par exemple, la première instance de travail analyse les enregistrements 0
à 9, la deuxième instance de travail peut analyser les enregistrements 10 à 19, etc. Dans cet exemple, chaque instance de travail reçoit le paramètre d'entrée de travail JOB_INDEX fourni par le système en tant que variable d'environnement
que vous pouvez utiliser pour calculer la plage d'enregistrements de base de données à analyser par chaque instance de travail. Le nombre d'instances de travail est spécifié lors de la soumission du travail par lots.
Lorsque vous exécutez un travail par lots, au cours du démarrage, les instances de travail risquent de se trouver dans un état en attente alors que les instances sont en cours de démarrage. Les temps d'attente des instances de travail peuvent varier en raison du système et de l'infrastructure réseau, car le système s'ajuste pour répondre aux demandes de ressources liées à cette exécution du travail. Si l'infrastructure système répond à une demande d'utilisation élevée, le résultat peut être un retard de plusieurs minutes du démarrage des travaux car les instances de travail sont mises à disposition juste à temps.
Statut
Un travail par lots est à l'état Succeeded lorsque toutes les instances d'exécution de travail sont terminées.
Un travail par lots est à l'état Failed lorsqu'une ou plusieurs instances d'exécution de travail atteignent le nombre maximal de nouvelles tentatives. De plus, si l'exécution d'un travail prend trop de temps, le travail est à
l'état Failed chaque fois que le temps d'exécution maximal est atteint. Pour plus d'informations, voir Statut du travail.
Soumission de travaux par lots similaires
Lorsque vous créez un travail, vous pouvez spécifier les informations de configuration de charge de travail qui sont utilisées à chaque fois que le travail est exécuté. Lorsque vous utilisez un ensemble commun d'informations de configuration pour les travaux par lots, avec Code Engine, vous pouvez spécifier des paramètres supplémentaires avec la soumission de travail afin de remplacer les paramètres de travail par lots pour cette soumission de travail spécifique.
Déclenchement de travaux par lots avec des événements
Les travaux par lots peuvent être soumis automatiquement en fonction d'événements, tels que des temporisateurs périodiques, des événements Object Storage ou des rubriques Kafka.
Supposons que vous souhaitiez déclencher automatiquement votre travail par lots en fonction d'un abonnement à un compartiment IBM Cloud Object Storage qui génère des événements chaque fois qu'un fichier est modifié ou ajouté au compartiment
Object Storage. Consultez la rubrique Exemple Code Engine cos-event-job pour savoir comment créer des événements Object
Storage et utiliser les événements pour déclencher des travaux par lots.
Pour plus d'informations sur l'utilisation des événements avec les travaux Code Engine, voir les rubriques suivantes: Utilisation du fournisseur d'événements périodiques, Utilisation du fournisseur d'événements IBM Cloud Object Storage et Utilisation du fournisseur d'événements Kafka.
Vous recherchez d'autres exemples de code ? Consultez les exemples pour le IBM Cloud Code Engine GitHub.
Comment démarrer avec les travaux par lots?
Pour créer et exécuter une application de travail par lots Code Engine simple avec l'exemple d'image icr.io/codeengine/firstjob, voir Exécution de votre premier travail Code Engine.
Vous pouvez également essayer un tutoriel de travail par lots. Voir Exécution et mise à jour des travaux.
Pour plus d'informations sur l'utilisation des travaux par lots, voir Utilisation des travaux et des exécutions de travail.