Exécuter des tâches et ajouter des packages d’applications
Exécuter des tâches simultanément à l’aide de l’API REST Batch
Azure Batch utilise des tâches parallèles pour diviser un travail entre des nœuds de calcul. Azure Batch convient particulièrement pour l’exécution de tâches Batch de calcul haute performance massivement parallèles. Le service Batch gère tout pour vous : la gestion et la planification de tous les nœuds et de toutes les applications nécessaires pour exécuter vos scénarios.
Avec un plus petit nombre de nœuds dans un pool, vous pouvez optimiser l’utilisation des ressources en exécutant plusieurs tâches simultanément. Certaines charges de travail peuvent résulter en des temps de travail plus courts et des coûts moindres lorsque plusieurs tâches partagent des nœuds de calcul.
Certains scénarios peuvent vous obliger à minimiser les transferts de données pour les tâches qui peuvent partager des données. Vous pouvez considérablement réduire les frais de transfert de données en copiant les données partagées vers un plus petit nombre de nœuds et en exécutant les tâches en parallèle sur chaque nœud. Cette approche réduit le temps nécessaire au transfert des données vers tous les nœuds au lieu de partager des données entre un grand nombre de nœuds.
Activer l’exécution des tâches parallèles
L’exécution des tâches parallèles contrôle le nombre de tâches qu’un seul nœud peut traiter simultanément dans un seul pool.
Dans Batch, les emplacements contrôlent l’exécution des tâches parallèles. Les tâches ont une propriété appelée RequiredSlots
, qui indique à quel point une tâche est exigeante en ressources. Les tâches exigeantes en ressources nécessitent davantage d’emplacements que les tâches légères en ressources.
Lorsque vous créez un pool, vous spécifiez le nombre d’emplacements de tâches disponibles par nœud en définissant la propriété taskSlotsPerNode
. Cette propriété détermine l’intensité des ressources des tâches qui peuvent s’exécuter simultanément sur un nœud.
Par exemple, si la propriété taskSlotsPerNode
d’un pool est définie sur 16, les tâches qui s’exécutent simultanément sur un nœud ne nécessitent jamais plus de 16 emplacements. Ce paramètre signifie, par exemple :
- Deux tâches qui nécessitent huit emplacements peuvent s’exécuter en même temps, car le nombre d’emplacements est égal à 16 (2 * 8 = 16)
- Trois tâches qui nécessitent cinq emplacements peuvent s’exécuter en même temps, car le nombre d’emplacements est inférieur à 16 (3 * 5 = 15)
- Cinq tâches qui nécessitent quatre emplacements ne peuvent pas s’exécuter en même temps, car le nombre d’emplacements est supérieur à 16 (5 * 4 = 20)
Au maximum, la propriété taskSlotsPerNode
peut avoir une valeur allant jusqu’à quatre fois le nombre de processeurs virtuels dans un nœud. Pour déterminer le nombre de processeurs virtuels disponibles sur un nœud, consultez Tailles de machines virtuelles dans Azure.
Remarque
Une fois que vous avez défini la propriété taskSlotsPerNode
, vous ne pouvez pas la modifier. La modification requiert la création d’un nouveau pool.
Définissez la propriété RequiredSlots
en fonction de la quantité de processeur, de mémoire ou d’E/S, dont la tâche aura besoin selon vous. En outre, définissez la propriété taskSlotsPerNode
en fonction du nombre de tâches pouvant s’exécuter simultanément sans dégrader les durées d’exécution des tâches.
Ajouter un package d’application et exécuter une application conteneur sur Azure Batch
packages d’application
Dans Azure Batch, une application fait référence à un jeu de versions de fichiers binaires automatiquement téléchargeable sur les nœuds de calcul de votre pool. Une application contient un ou plusieurs packages d’application qui représentent différentes versions de l’application.
Vous pouvez spécifier des packages d’application aux niveaux d’un pool ou d’une tâche. Des packages d’applications de pool sont appropriés lorsque tous les nœuds dans un pool exécutent les tâches d’un travail.
Vous pouvez spécifier plusieurs packages d’applications lorsque vous créez un pool. Les applications sont déployées lorsqu’un nœud rejoint un pool et lorsque le nœud est redémarré ou réinitialisé. Pour installer un nouveau package dans un pool existant, vous devez redémarrer ses nœuds.
Si vous choisissez de déployer un package d’application au niveau de la tâche, il sera utile dans les environnements de pool partagé. Dans ces environnements, différents travaux s’exécutent sur un pool et le pool n’est pas supprimé lorsqu’un travail est terminé. Si votre travail présente moins de tâches que le pool ne contient de nœuds, les packages d’application au niveau des tâches peuvent minimiser le transfert de données, votre application n’étant déployée que sur les nœuds exécutant des tâches.
Vous pouvez utiliser le Portail Azure ou les API de Batch Management pour gérer les packages d’application dans votre compte Batch. Pour utiliser des packages d’application, vous devez lier un compte de stockage Azure à votre compte Batch. Le service Batch utilise le compte de stockage associé pour stocker vos packages d’applications. Nous vous recommandons de créer un compte de stockage spécifiquement destiné à être utilisé avec votre compte Batch.
Applications conteneur
Les conteneurs deviennent le meilleur moyen pour mettre en package, déployer et gérer des applications cloud. Azure Container Instances est une excellente solution pour les scénarios qui peuvent fonctionner dans des conteneurs isolés, y compris les applications basiques, automatiser des tâches et créer des travaux.
L’utilisation de conteneurs permet de lancer simplement des tâches par lot sans avoir à gérer un environnement et des dépendances pour exécuter des applications. Les conteneurs déploient les applications sous la forme d’unités légères, portables et autonomes pouvant s’exécuter dans différents environnements. Les tâches basées sur le conteneur dans Batch peuvent également tirer parti des fonctionnalités des tâches non basées sur le conteneur, notamment les packages d’applications et la gestion des fichiers de ressources et des fichiers de sortie.
Vous pouvez créer un pool compatible avec un conteneur avec ou sans images conteneur prérécupérées. Le processus de prérécupération vous permet de précharger les images conteneur à partir de Docker Hub ou d’un autre registre de conteneurs (comme Azure Container Registry) sur Internet.
L’avantage de la prérécupération d’images conteneur est que, lors de la première exécution des tâches, ces dernières ne doivent pas attendre que l’image conteneur soit téléchargée. La configuration du conteneur extrait des images conteneur vers les machines virtuelles une fois le pool créé. Les tâches exécutées sur le pool peuvent ensuite référencer la liste des images et des options d’exécution du conteneur.