Ce document explique comment créer et exécuter un job Batch qui utilise un ou plusieurs volumes de stockage externes. Les options de stockage externe incluent un disque persistant nouveau ou existant, de nouveaux disques SSD locaux, des buckets Cloud Storage existants et un système de fichiers réseau (NFS) existant, tel qu'un partage de fichiers Filestore.
Que vous ajoutiez ou non des volumes de stockage externes, chaque VM Compute Engine d'un job possède un disque de démarrage qui fournit un espace de stockage pour l'image et les instructions du système d'exploitation du job. Pour savoir comment configurer le disque de démarrage d'un job, consultez plutôt Présentation de l'environnement de l'OS de la VM.
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer un job, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Éditeur de tâches par lot (
roles/batch.jobsEditor
) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service du job, qui par défaut est le compte de service Compute Engine par défaut -
Créez un job qui utilise un bucket Cloud Storage :
Lecteur des objets Storage (
roles/storage.objectViewer
) sur le bucket
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de tâches par lot (
Créer un job qui utilise des volumes de stockage
Une tâche peut éventuellement utiliser un ou plusieurs des types de volumes de stockage externes suivants. Pour en savoir plus sur tous les types de volumes de stockage, ainsi que sur les différences et les restrictions pour chacun d'eux, consultez la documentation sur les options de stockage des VM Compute Engine.
- Disque persistant : stockage de blocs persistant, zonal ou régional
- Disque SSD local : stockage de blocs temporaire hautes performances
- Bucket Cloud Storage : stockage d'objets à prix abordable
- Système de fichiers réseau (NFS) : système de fichiers distribué qui suit le protocole NFS (Network File System). Par exemple, un partage de fichiers Filestore, qui est un NFS hautes performances hébergé sur Google Cloud
Vous pouvez autoriser une tâche à utiliser chaque volume de stockage en l'incluant dans la définition de votre tâche et en spécifiant son chemin d'installation (mountPath
) dans vos exécutables. Pour savoir comment créer un job qui utilise des volumes de stockage, consultez une ou plusieurs des sections suivantes :
- Utiliser un disque persistant
- Utiliser un disque SSD local
- Utiliser un bucket Cloud Storage
- Utiliser un système de fichiers réseau
Utiliser un disque persistant
Un job qui utilise des disques persistants est soumis aux restrictions suivantes :
Tous les disques persistants : consultez les restrictions pour tous les disques persistants.
Disques persistants nouveaux ou existants : chaque disque persistant d'un job peut être nouveau (défini dans le job et créé avec celui-ci) ou existant (déjà créé dans votre projet et spécifié dans le job). Pour utiliser un disque persistant, il doit être formaté et installé sur les VM du job, qui doivent se trouver au même emplacement que le disque persistant. Batch monte tous les disques persistants que vous incluez dans un job et formate tous les nouveaux disques persistants, mais vous devez formater et démonter tous les disques persistants existants que vous souhaitez qu'un job utilise.
Les options de localisation, les options de format et les options de montage acceptées varient entre les disques persistants nouveaux et existants, comme décrit dans le tableau suivant :
Nouveaux disques persistants Disques persistants existants Options de mise en forme Le disque persistant est automatiquement formaté avec un système de fichiers
ext4
.Vous devez formater le disque persistant pour utiliser un système de fichiers
ext4
avant de l'utiliser pour un job.Options d'installation Toutes les options sont acceptées.
Toutes les options sont acceptées, sauf l'écriture. Cela est dû aux restrictions du mode écriture simultanée.
Vous devez dissocier le disque persistant de toutes les VM auxquelles il est associé avant de l'utiliser pour un job.
Options d'emplacement Vous ne pouvez créer que des disques persistants zonaux.
Vous pouvez sélectionner n'importe quel lieu pour votre tâche. Les disques persistants sont créés dans la zone dans laquelle votre projet s'exécute.
Vous pouvez sélectionner des disques persistants zonaux et régionaux.
Vous devez définir l'emplacement du job (ou, si spécifié, uniquement les emplacements autorisés du job) sur uniquement les emplacements contenant tous les disques persistants du job. Par exemple, pour un disque persistant zonal, l'emplacement du job doit être la zone du disque. Pour un disque persistant régional, l'emplacement du job doit être la région du disque ou, si vous spécifiez des zones, l'une ou les deux zones spécifiques où se trouve le disque persistant régional.Modèles d'instance : si vous souhaitez utiliser un modèle d'instance de VM lors de la création de ce job, vous devez associer les disques persistants de ce job dans le modèle d'instance. Sinon, si vous ne souhaitez pas utiliser de modèle d'instance, vous devez associer les disques persistants directement dans la définition du job.
Vous pouvez créer un job qui utilise un disque persistant à l'aide de la consoleGoogle Cloud , de gcloud CLI, de l'API Batch, de C++, Go, Java, Node.js ou Python.
Console
À l'aide de la console Google Cloud , l'exemple suivant crée un job qui exécute un script pour lire un fichier à partir d'un disque persistant zonal existant situé dans la zone us-central1-a
. L'exemple de script suppose que le job dispose d'un disque persistant zonal existant contenant un fichier texte nommé example.txt
dans le répertoire racine.
Facultatif : Créer un exemple de disque persistant zonal
Si vous souhaitez créer un disque persistant zonal que vous pouvez utiliser pour exécuter le script d'exemple, procédez comme suit avant de créer votre job :
Associez un nouveau disque persistant vide nommé
example-disk
à une VM Linux dans la zoneus-central1-a
, puis exécutez des commandes sur la VM pour formater et installer le disque. Pour obtenir des instructions, consultez Ajouter un disque persistant à votre VM.Ne vous déconnectez pas encore de la VM.
Pour créer
example.txt
sur le disque persistant, exécutez les commandes suivantes sur la VM :Pour remplacer le répertoire de travail actuel par le répertoire racine du disque persistant, saisissez la commande suivante :
cd VM_MOUNT_PATH
Remplacez VM_MOUNT_PATH par le chemin d'accès au répertoire dans lequel le disque persistant a été installé sur cette VM à l'étape précédente (par exemple,
/mnt/disks/example-disk
).Appuyez sur la touche
Enter
.Pour créer et définir un fichier nommé
example.txt
, saisissez la commande suivante :cat > example.txt
Appuyez sur la touche
Enter
.Saisissez le contenu du fichier. Par exemple, saisissez
Hello world!
.Pour enregistrer le fichier, appuyez sur
Ctrl+D
(ouCommand+D
sur macOS).
Lorsque vous avez terminé, vous pouvez vous déconnecter de la VM.
Dissociez le disque persistant de la VM.
Si vous n'avez plus besoin de la VM, vous pouvez la supprimer, ce qui détache automatiquement le disque persistant.
Sinon, dissociez le disque persistant. Pour obtenir des instructions, consultez Dissocier et réassocier des disques de démarrage, puis dissociez le disque persistant
example-disk
au lieu du disque de démarrage de la VM.
Créer un job qui utilise le disque persistant zonal existant
Pour créer un job qui utilise des disques persistants zonaux existants à l'aide de la consoleGoogle Cloud , procédez comme suit :
Dans la console Google Cloud , accédez à la page Liste des jobs.
Cliquez sur
Créer. La page Créer un job par lot s'ouvre. Dans le volet de gauche, la page Informations sur la tâche est sélectionnée.Configurez la page Informations sur le job :
(Facultatif) Dans le champ Nom de la tâche, personnalisez le nom de la tâche.
Par exemple, saisissez
example-disk-job
.Configurez la section Détails de la tâche :
Dans la fenêtre Nouvel exécutable, ajoutez au moins un script ou un conteneur pour que ce job s'exécute.
Par exemple, pour exécuter un script qui affiche le contenu d'un fichier nommé
example.txt
et situé dans le répertoire racine du disque persistant utilisé par ce job, procédez comme suit :Cochez la case Script. Une zone de texte s'affiche.
Dans la zone de texte, saisissez le script suivant :
echo "Here is the content of the example.txt file in the persistent disk." cat MOUNT_PATH/example.txt
Remplacez MOUNT_PATH par le chemin d'accès à l'emplacement où vous prévoyez de monter le disque persistant sur les VM pour ce job (par exemple,
/mnt/disks/example-disk
).Cliquez sur OK.
Dans le champ Nombre de tâches, saisissez le nombre de tâches pour ce job.
Par exemple, saisissez
1
(valeur par défaut).Dans le champ Parallélisme, saisissez le nombre de tâches à exécuter simultanément.
Par exemple, saisissez
1
(valeur par défaut).
Configurez la page Spécifications des ressources :
Dans le volet de gauche, cliquez sur Spécifications des ressources. La page Spécifications des ressources s'ouvre.
Sélectionnez l'emplacement pour ce travail. Pour utiliser un disque persistant zonal existant, les VM d'un job doivent se trouver dans la même zone.
Dans le champ Région, sélectionnez une région.
Par exemple, pour utiliser l'exemple de disque persistant zonal, sélectionnez
us-central1 (Iowa)
(par défaut).Dans le champ Zone, sélectionnez une zone.
Par exemple, sélectionnez
us-central1-a (Iowa)
.
Configurez la page Configurations supplémentaires :
Dans le volet de gauche, cliquez sur Configurations supplémentaires. La page Configurations supplémentaires s'ouvre.
Pour chaque disque persistant zonal existant que vous souhaitez installer sur ce job, procédez comme suit :
Dans la section Volume de stockage, cliquez sur Ajouter un volume. La fenêtre Nouveau volume s'affiche.
Dans la fenêtre Nouveau volume, procédez comme suit :
Dans la section Type de volume, sélectionnez Disque persistant (par défaut).
Dans la liste Disque, sélectionnez un disque persistant zonal existant que vous souhaitez associer à ce job. Le disque doit se trouver dans la même zone que ce job.
Par exemple, sélectionnez le disque persistant zonal existant que vous avez préparé, qui se trouve dans la zone
us-central1-a
et contient le fichierexample.txt
.Facultatif : Si vous souhaitez renommer ce disque persistant zonal, procédez comme suit :
Sélectionnez Personnaliser le nom de l'appareil.
Dans le champ Nom de l'appareil, saisissez le nouveau nom de votre disque.
Dans le champ Chemin d'installation, saisissez le chemin d'installation (MOUNT_PATH) de ce disque persistant :
Par exemple, saisissez les éléments suivants :
/mnt/disks/EXISTING_PERSISTENT_DISK_NAME
Remplacez EXISTING_PERSISTENT_DISK_NAME par le nom du disque. Si vous avez renommé le disque persistant zonal, utilisez le nouveau nom.
Par exemple, remplacez EXISTING_PERSISTENT_DISK_NAME par
example-disk
.Cliquez sur OK.
Facultatif : Configurez les autres champs de ce job.
Facultatif : Pour examiner la configuration du job, cliquez sur Aperçu dans le volet de gauche.
Cliquez sur Créer.
La page Détails de la tâche affiche la tâche que vous avez créée.
gcloud
L'exemple suivant utilise gcloud CLI pour créer un job qui associe et installe un disque persistant existant et un nouveau disque persistant.
Le job comporte trois tâches qui exécutent chacune un script pour créer un fichier dans le nouveau disque persistant nommé output_task_TASK_INDEX.txt
, où TASK_INDEX correspond à l'index de chaque tâche (0, 1 et 2).
Pour créer un job qui utilise des disques persistants à l'aide de gcloud CLI, utilisez la commande gcloud batch jobs submit
.
Dans le fichier de configuration JSON du job, spécifiez les disques persistants dans le champ instances
et installez le disque persistant dans le champ volumes
.
Créez un fichier JSON.
Si vous n'utilisez pas de modèle d'instance pour ce job, créez un fichier JSON avec le contenu suivant :
{ "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet de votre projet.EXISTING_PERSISTENT_DISK_NAME
: nom d'un disque persistant existant.EXISTING_PERSISTENT_DISK_LOCATION
: emplacement d'un disque persistant existant. Pour chaque disque persistant zonal existant, l'emplacement du job doit être la zone du disque. Pour chaque disque persistant régional existant, l'emplacement du job doit être la région du disque ou, si vous spécifiez des zones, l'une ou les deux zones spécifiques dans lesquelles se trouve le disque persistant régional. Si vous ne spécifiez aucun disque persistant existant, vous pouvez sélectionner n'importe quel emplacement. En savoir plus sur le champallowedLocations
NEW_PERSISTENT_DISK_SIZE
: taille du nouveau disque persistant en Go. Les tailles autorisées dépendent du type de disque persistant, mais la taille minimale est souvent de 10 Go (10
) et la taille maximale de 64 To (64000
).NEW_PERSISTENT_DISK_TYPE
: le type de disque du nouveau disque persistant (pd-standard
,pd-balanced
,pd-ssd
oupd-extreme
). Le type de disque par défaut pour les disques persistants non amorçables estpd-standard
.NEW_PERSISTENT_DISK_NAME
: nom du nouveau disque persistant.
Si vous utilisez un modèle d'instance de VM pour ce job, créez un fichier JSON comme indiqué précédemment, mais remplacez le champ
instances
par ce qui suit :"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],
où
INSTANCE_TEMPLATE_NAME
est le nom du modèle d'instance pour ce job. Pour un job qui utilise des disques persistants, ce modèle d'instance doit définir et associer les disques persistants que vous souhaitez que le job utilise. Dans cet exemple, le modèle doit définir et associer un nouveau disque persistant nomméNEW_PERSISTENT_DISK_NAME
, et associer un disque persistant existant nomméEXISTING_PERSISTENT_DISK_NAME
.
Exécutez la commande suivante :
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Remplacez les éléments suivants :
JOB_NAME
: nom du job.LOCATION
: emplacement du job.JSON_CONFIGURATION_FILE
: chemin d'accès à un fichier JSON contenant les détails de configuration du job.
API
À l'aide de l'API Batch, l'exemple suivant crée un job qui associe et installe un disque persistant existant et un nouveau disque persistant. Le job comporte trois tâches qui exécutent chacune un script pour créer un fichier dans le nouveau disque persistant nommé output_task_TASK_INDEX.txt
, où TASK_INDEX correspond à l'index de chaque tâche (0, 1 et 2).
Pour créer un job qui utilise des disques persistants à l'aide de l'API Batch, utilisez la méthode jobs.create
.
Dans la requête, spécifiez les disques persistants dans le champ instances
et installez le disque persistant dans le champ volumes
.
Si vous n'utilisez pas de modèle d'instance pour ce job, envoyez la requête suivante :
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "disks": [ { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "existingDisk": "projects/PROJECT_ID/EXISTING_PERSISTENT_DISK_LOCATION/disks/EXISTING_PERSISTENT_DISK_NAME" }, { "newDisk": { "sizeGb": NEW_PERSISTENT_DISK_SIZE, "type": "NEW_PERSISTENT_DISK_TYPE" }, "deviceName": "NEW_PERSISTENT_DISK_NAME" } ] } } ], "location": { "allowedLocations": [ "EXISTING_PERSISTENT_DISK_LOCATION" ] } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/NEW_PERSISTENT_DISK_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "NEW_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/NEW_PERSISTENT_DISK_NAME", "mountOptions": "rw,async" }, { "deviceName": "EXISTING_PERSISTENT_DISK_NAME", "mountPath": "/mnt/disks/EXISTING_PERSISTENT_DISK_NAME" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet de votre projet.LOCATION
: emplacement du job.JOB_NAME
: nom du job.EXISTING_PERSISTENT_DISK_NAME
: nom d'un disque persistant existant.EXISTING_PERSISTENT_DISK_LOCATION
: emplacement d'un disque persistant existant. Pour chaque disque persistant zonal existant, l'emplacement du job doit être la zone du disque. Pour chaque disque persistant régional existant, l'emplacement du job doit être la région du disque ou, si vous spécifiez des zones, l'une ou les deux zones spécifiques dans lesquelles se trouve le disque persistant régional. Si vous ne spécifiez aucun disque persistant existant, vous pouvez sélectionner n'importe quel emplacement. En savoir plus sur le champallowedLocations
NEW_PERSISTENT_DISK_SIZE
: taille du nouveau disque persistant en Go. Les tailles autorisées dépendent du type de disque persistant, mais la taille minimale est souvent de 10 Go (10
) et la taille maximale de 64 To (64000
).NEW_PERSISTENT_DISK_TYPE
: le type de disque du nouveau disque persistant (pd-standard
,pd-balanced
,pd-ssd
oupd-extreme
). Le type de disque par défaut pour les disques persistants non amorçables estpd-standard
.NEW_PERSISTENT_DISK_NAME
: nom du nouveau disque persistant.
Si vous utilisez un modèle d'instance de VM pour ce job, créez un fichier JSON comme indiqué précédemment, mais remplacez le champ
instances
par ce qui suit :"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
où
INSTANCE_TEMPLATE_NAME
est le nom du modèle d'instance pour ce job. Pour un job qui utilise des disques persistants, ce modèle d'instance doit définir et associer les disques persistants que vous souhaitez que le job utilise. Dans cet exemple, le modèle doit définir et associer un nouveau disque persistant nomméNEW_PERSISTENT_DISK_NAME
, et associer un disque persistant existant nomméEXISTING_PERSISTENT_DISK_NAME
.
C++
Pour créer un job Batch qui utilise des disques persistants nouveaux ou existants à l'aide des bibliothèques clientes Cloud pour C++, utilisez la fonction CreateJob
et incluez les éléments suivants :
- Pour associer des disques persistants aux VM d'un job, incluez l'un des éléments suivants :
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, utilisez la méthode
set_remote_path
. - Si vous utilisez un modèle d'instance de VM pour ce job, utilisez la méthode
set_instance_template
.
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, utilisez la méthode
- Pour associer les disques persistants au job, utilisez le champ
volumes
avec les champsdeviceName
etmountPath
. Pour les nouveaux disques persistants, utilisez également le champmountOptions
pour activer l'écriture.
Pour obtenir un exemple de code d'un cas d'utilisation similaire, consultez Utiliser un bucket Cloud Storage.
Go
Pour créer un job Batch qui utilise des disques persistants nouveaux ou existants à l'aide des bibliothèques clientes Cloud pour Go, utilisez la fonction CreateJob
et incluez les éléments suivants :
- Pour associer des disques persistants aux VM d'un job, incluez l'un des éléments suivants :
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, incluez le type
AllocationPolicy_AttachedDisk
. - Si vous utilisez un modèle d'instance de VM pour ce job, incluez le type
AllocationPolicy_InstancePolicyOrTemplate_InstanceTemplate
.
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, incluez le type
- Pour monter les disques persistants sur le job, utilisez le type
Volume
avec le typeVolume_DeviceName
et le champMountPath
. Pour les nouveaux disques persistants, utilisez également le champMountOptions
pour activer l'écriture.
Java
Pour créer un job Batch qui utilise des disques persistants nouveaux ou existants à l'aide des bibliothèques clientes Cloud pour Java, utilisez la classe CreateJobRequest
et incluez les éléments suivants :
- Pour associer des disques persistants aux VM d'un job, incluez l'un des éléments suivants :
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, incluez la méthode
setDisks
. - Si vous utilisez un modèle d'instance de VM pour ce job, incluez la méthode
setInstanceTemplate
.
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, incluez la méthode
- Pour installer les disques persistants sur le job, utilisez la classe
Volume
avec les méthodessetDeviceName
etsetMountPath
. Pour les nouveaux disques persistants, utilisez également la méthodesetMountOptions
pour activer l'écriture.
Par exemple, utilisez l'exemple de code suivant :
Node.js
Pour créer un job Batch qui utilise des disques persistants nouveaux ou existants à l'aide des bibliothèques clientes Google Cloud pour Node.js, utilisez la méthode createJob
et incluez les éléments suivants :
- Pour associer des disques persistants aux VM d'un job, incluez l'un des éléments suivants :
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, incluez la classe
AllocationPolicy.AttachedDisk
. - Si vous utilisez un modèle d'instance de VM pour ce job, incluez la propriété
instanceTemplate
.
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, incluez la classe
- Pour associer les disques persistants au job, utilisez la classe
Volume
avec les propriétésdeviceName
etmountPath
. Pour les nouveaux disques persistants, utilisez également la propriétémountOptions
pour activer l'écriture.
Python
Pour créer un job Batch qui utilise des disques persistants nouveaux ou existants à l'aide des bibliothèques clientes Cloud pour Python, utilisez la fonction CreateJob
et incluez les éléments suivants :
- Pour associer des disques persistants aux VM d'un job, incluez l'un des éléments suivants :
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, incluez la classe
AttachedDisk
. - Si vous utilisez un modèle d'instance de VM pour ce job, incluez l'attribut
instance_template
.
- Si vous n'utilisez pas de modèle d'instance de VM pour ce job, incluez la classe
- Pour associer les disques persistants au job, utilisez la classe
Volume
avec les attributsdevice_name
etmount_path
. Pour les nouveaux disques persistants, utilisez également l'attributmount_options
pour activer l'écriture.
Par exemple, utilisez l'exemple de code suivant :
Utiliser un disque SSD local
Un job qui utilise des disques SSD locaux est soumis aux restrictions suivantes :
- Tous les disques SSD locaux : consultez les restrictions applicables à tous les disques SSD locaux.
- Modèles d'instance : si vous souhaitez spécifier un modèle d'instance de VM lors de la création de ce job, vous devez associer les disques persistants de ce job dans le modèle d'instance. Sinon, si vous ne souhaitez pas utiliser de modèle d'instance, vous devez associer les disques persistants directement dans la définition du job.
Vous pouvez créer un job qui utilise un SSD local à l'aide de gcloud CLI, de l'API Batch, de Java ou de Python.
L'exemple suivant décrit comment créer un job qui crée, associe et monte un SSD local. Le job comporte également trois tâches qui exécutent chacune un script pour créer un fichier dans le SSD local nommé output_task_TASK_INDEX.txt
, où TASK_INDEX
est l'index de chaque tâche : 0
, 1
et 2
.
gcloud
Pour créer un job qui utilise des disques SSD locaux à l'aide de la gcloud CLI, utilisez la commande gcloud batch jobs submit
.
Dans le fichier de configuration JSON du job, créez et associez les disques SSD locaux dans le champ instances
, puis installez-les dans le champ volumes
.
Créez un fichier JSON.
Si vous n'utilisez pas de modèle d'instance pour ce job, créez un fichier JSON avec le contenu suivant :
{ "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Remplacez les éléments suivants :
MACHINE_TYPE
: type de machine, qui peut être prédéfini ou personnalisé, des VM du job. Le nombre de disques SSD locaux autorisés dépend du type de machine des VM de votre job.LOCAL_SSD_NAME
: nom d'un disque SSD local créé pour ce job.LOCAL_SSD_SIZE
: taille de tous les disques SSD locaux en Go. La capacité de chaque disque SSD local est de 375 Go. Cette valeur doit donc être un multiple de375
Go. Par exemple, pour deux disques SSD locaux, définissez cette valeur sur750
Go.
Si vous utilisez un modèle d'instance de VM pour ce job, créez un fichier JSON comme indiqué précédemment, mais remplacez le champ
instances
par ce qui suit :"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ],
où
INSTANCE_TEMPLATE_NAME
est le nom du modèle d'instance pour ce job. Pour une tâche qui utilise des disques SSD locaux, ce modèle d'instance doit définir et associer les disques SSD locaux que vous souhaitez que la tâche utilise. Pour cet exemple, le modèle doit définir et associer un disque SSD local nomméLOCAL_SSD_NAME
.
Exécutez la commande suivante :
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Remplacez les éléments suivants :
JOB_NAME
: nom du job.LOCATION
: emplacement du job.JSON_CONFIGURATION_FILE
: chemin d'accès à un fichier JSON contenant les détails de configuration du job.
API
Pour créer un job qui utilise des disques SSD locaux à l'aide de l'API Batch, utilisez la méthode jobs.create
.
Dans la requête, créez et associez les disques SSD locaux dans le champ instances
, puis installez-les dans le champ volumes
.
Si vous n'utilisez pas de modèle d'instance pour ce job, envoyez la requête suivante :
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME { "allocationPolicy": { "instances": [ { "policy": { "machineType": MACHINE_TYPE, "disks": [ { "newDisk": { "sizeGb": LOCAL_SSD_SIZE, "type": "local-ssd" }, "deviceName": "LOCAL_SSD_NAME" } ] } } ] }, "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> /mnt/disks/LOCAL_SSD_NAME/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "deviceName": "LOCAL_SSD_NAME", "mountPath": "/mnt/disks/LOCAL_SSD_NAME", "mountOptions": "rw,async" } ] }, "taskCount":3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet de votre projet.LOCATION
: emplacement du job.JOB_NAME
: nom du job.MACHINE_TYPE
: type de machine, qui peut être prédéfini ou personnalisé, des VM du job. Le nombre de disques SSD locaux autorisés dépend du type de machine des VM de votre job.LOCAL_SSD_NAME
: nom d'un disque SSD local créé pour ce job.LOCAL_SSD_SIZE
: taille de tous les disques SSD locaux en Go. La capacité de chaque disque SSD local est de 375 Go. Cette valeur doit donc être un multiple de375
Go. Par exemple, pour deux disques SSD locaux, définissez cette valeur sur750
Go.
Si vous utilisez un modèle d'instance de VM pour ce job, créez un fichier JSON comme indiqué précédemment, mais remplacez le champ
instances
par ce qui suit :"instances": [ { "instanceTemplate": "INSTANCE_TEMPLATE_NAME" } ], ...
où
INSTANCE_TEMPLATE_NAME
est le nom du modèle d'instance pour ce job. Pour une tâche qui utilise des disques SSD locaux, ce modèle d'instance doit définir et associer les disques SSD locaux que vous souhaitez que la tâche utilise. Pour cet exemple, le modèle doit définir et associer un disque SSD local nomméLOCAL_SSD_NAME
.
Go
Java
Node.js
Python
Utiliser un bucket Cloud Storage
Pour créer un job qui utilise un bucket Cloud Storage existant, sélectionnez l'une des méthodes suivantes :
- Recommandation : Installez un bucket directement sur les VM de votre job en spécifiant le bucket dans la définition du job, comme indiqué dans cette section. Lorsque le job s'exécute, le bucket est automatiquement monté sur les VM pour votre job à l'aide de Cloud Storage FUSE.
- Créez un job avec des tâches qui accèdent directement à un bucket Cloud Storage à l'aide de gcloud CLI ou des bibliothèques clientes pour l'API Cloud Storage. Pour savoir comment accéder à un bucket Cloud Storage directement depuis une VM, consultez la documentation Compute Engine sur l'écriture et la lecture de données à partir de buckets Cloud Storage.
Avant de créer un job qui utilise un bucket, créez-en un ou identifiez-en un existant. Pour en savoir plus, consultez Créer des buckets et Lister les buckets.
Vous pouvez créer un job qui utilise un bucket Cloud Storage à l'aide de la consoleGoogle Cloud , de gcloud CLI, de l'API Batch, de C++, Go, Java, Node.js ou Python.
L'exemple suivant décrit comment créer un job qui monte un bucket Cloud Storage. Le job comporte également trois tâches qui exécutent chacune un script pour créer un fichier dans le bucket nommé output_task_TASK_INDEX.txt
, où TASK_INDEX
correspond à l'index de chaque tâche : 0
, 1
et 2
.
Console
Pour créer un job qui utilise un bucket Cloud Storage à l'aide de la consoleGoogle Cloud , procédez comme suit :
Dans la console Google Cloud , accédez à la page Liste des jobs.
Cliquez sur
Créer. La page Créer un job par lot s'ouvre. Dans le volet de gauche, la page Informations sur la tâche est sélectionnée.Configurez la page Informations sur le job :
(Facultatif) Dans le champ Nom de la tâche, personnalisez le nom de la tâche.
Par exemple, saisissez
example-bucket-job
.Configurez la section Détails de la tâche :
Dans la fenêtre Nouvel exécutable, ajoutez au moins un script ou un conteneur pour que ce job s'exécute.
Par exemple, procédez comme suit :
Cochez la case Script. Une zone de texte s'affiche.
Dans la zone de texte, saisissez le script suivant :
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt
Remplacez MOUNT_PATH par le chemin d'accès au point de montage que les exécutables de ce job utilisent pour accéder à un bucket Cloud Storage existant. Le chemin doit commencer par
/mnt/disks/
, suivi d'un répertoire ou d'un chemin de votre choix. Par exemple, si vous souhaitez représenter ce bucket avec un répertoire nommémy-bucket
, définissez le chemin d'accès au point de montage sur/mnt/disks/my-bucket
.Cliquez sur OK.
Dans le champ Nombre de tâches, saisissez le nombre de tâches pour ce job.
Par exemple, saisissez
3
.Dans le champ Parallélisme, saisissez le nombre de tâches à exécuter simultanément.
Par exemple, saisissez
1
(valeur par défaut).
Configurez la page Configurations supplémentaires :
Dans le volet de gauche, cliquez sur Configurations supplémentaires. La page Configurations supplémentaires s'ouvre.
Pour chaque bucket Cloud Storage que vous souhaitez installer pour ce job, procédez comme suit :
Dans la section Volume de stockage, cliquez sur Ajouter un volume. La fenêtre Nouveau volume s'affiche.
Dans la fenêtre Nouveau volume, procédez comme suit :
Dans la section Type de volume, sélectionnez Bucket Cloud Storage.
Dans le champ Nom du bucket de stockage, saisissez le nom d'un bucket existant.
Par exemple, saisissez le bucket que vous avez spécifié dans l'exécutable de ce job.
Dans le champ Chemin d'installation, saisissez le chemin d'installation du bucket (MOUNT_PATH) que vous avez spécifié dans le fichier exécutable.
Cliquez sur OK.
Facultatif : Configurez les autres champs de ce job.
Facultatif : Pour examiner la configuration du job, cliquez sur Aperçu dans le volet de gauche.
Cliquez sur Créer.
La page Détails de la tâche affiche la tâche que vous avez créée.
gcloud
Pour créer un job qui utilise un bucket Cloud Storage à l'aide de gcloud CLI, utilisez la commande gcloud batch jobs submit
.
Dans le fichier de configuration JSON du job, montez le bucket dans le champ volumes
.
Par exemple, pour créer un job qui génère des fichiers dans Cloud Storage :
Créez un fichier json contenant les éléments suivants :
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "gcs": { "remotePath": "BUCKET_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Remplacez les éléments suivants :
BUCKET_PATH
: chemin d'accès au répertoire du bucket auquel ce job doit accéder. Il doit commencer par le nom du bucket. Par exemple, pour un bucket nomméBUCKET_NAME
, le chemin d'accèsBUCKET_NAME
représente le répertoire racine du bucket, et le chemin d'accèsBUCKET_NAME/subdirectory
représente le sous-répertoiresubdirectory
.MOUNT_PATH
: chemin d'accès au point de montage que les exécutables du job utilisent pour accéder à ce bucket. Le chemin d'accès doit commencer par/mnt/disks/
, suivi d'un répertoire ou d'un chemin d'accès de votre choix. Par exemple, si vous souhaitez représenter ce bucket avec un répertoire nommémy-bucket
, définissez le chemin d'installation sur/mnt/disks/my-bucket
.
Exécutez la commande suivante :
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Remplacez les éléments suivants :
JOB_NAME
: nom du job.LOCATION
: emplacement du job.JSON_CONFIGURATION_FILE
: chemin d'accès à un fichier JSON contenant les détails de configuration du job.
API
Pour créer un job qui utilise un bucket Cloud Storage à l'aide de l'API Batch, utilisez la méthode jobs.create
et installez le bucket dans le champ volumes
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"gcs": {
"remotePath": "BUCKET_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet de votre projet.LOCATION
: emplacement du job.JOB_NAME
: nom du job.BUCKET_PATH
: chemin d'accès au répertoire du bucket auquel vous souhaitez que ce job accède. Il doit commencer par le nom du bucket. Par exemple, pour un bucket nomméBUCKET_NAME
, le chemin d'accèsBUCKET_NAME
représente le répertoire racine du bucket, et le chemin d'accèsBUCKET_NAME/subdirectory
représente le sous-répertoiresubdirectory
.MOUNT_PATH
: chemin d'accès au point de montage que les exécutables du job utilisent pour accéder à ce bucket. Le chemin d'accès doit commencer par/mnt/disks/
, suivi d'un répertoire ou d'un chemin d'accès de votre choix. Par exemple, si vous souhaitez représenter ce bucket avec un répertoire nommémy-bucket
, définissez le chemin d'installation sur/mnt/disks/my-bucket
.
C++
C++
Pour en savoir plus, consultez la documentation de référence de l'API Batch C++.
Pour vous authentifier auprès de Batch, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Go
Pour en savoir plus, consultez la documentation de référence de l'API Batch Go.
Pour vous authentifier auprès de Batch, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Java
Pour en savoir plus, consultez la documentation de référence de l'API Batch Java.
Pour vous authentifier auprès de Batch, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Node.js
Pour en savoir plus, consultez la documentation de référence de l'API Batch Node.js.
Pour vous authentifier auprès de Batch, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Python
Pour en savoir plus, consultez la documentation de référence de l'API Batch Python.
Pour vous authentifier auprès de Batch, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Utiliser un système de fichiers réseau
Vous pouvez créer un job qui utilise un système de fichiers réseau (NFS) existant, tel qu'un partage de fichiers Filestore, à l'aide de la console Google Cloud , de la gcloud CLI ou de l'API Batch.
Avant de créer un job qui utilise un NFS, assurez-vous que le pare-feu de votre réseau est correctement configuré pour autoriser le trafic entre les VM de votre job et le NFS. Pour en savoir plus, consultez Configurer des règles de pare-feu pour Filestore.
L'exemple suivant décrit comment créer un job qui spécifie et monte un NFS. Le job comporte également trois tâches qui exécutent chacune un script pour créer un fichier dans le NFS nommé output_task_TASK_INDEX.txt
, où TASK_INDEX
est l'index de chaque tâche : 0
, 1
et 2
.
Console
Pour créer un job qui utilise un NFS à l'aide de la console Google Cloud , procédez comme suit :
Dans la console Google Cloud , accédez à la page Liste des jobs.
Cliquez sur
Créer. La page Créer un job par lot s'ouvre. Dans le volet de gauche, la page Informations sur la tâche est sélectionnée.Configurez la page Informations sur le job :
(Facultatif) Dans le champ Nom de la tâche, personnalisez le nom de la tâche.
Par exemple, saisissez
example-nfs-job
.Configurez la section Détails de la tâche :
Dans la fenêtre Nouvel exécutable, ajoutez au moins un script ou un conteneur pour que ce job s'exécute.
Par exemple, procédez comme suit :
Cochez la case Script. Une zone de texte s'affiche.
Dans la zone de texte, saisissez le script suivant :
echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt
Remplacez MOUNT_PATH par le chemin de montage que l'exécutable du job utilise pour accéder à ce NFS. Le chemin d'accès doit commencer par
/mnt/disks/
, suivi d'un répertoire ou d'un chemin d'accès de votre choix. Par exemple, si vous souhaitez représenter ce NFS avec un répertoire nommémy-nfs
, définissez le chemin d'installation sur/mnt/disks/my-nfs
.Cliquez sur OK.
Dans le champ Nombre de tâches, saisissez le nombre de tâches pour ce job.
Par exemple, saisissez
3
.Dans le champ Parallélisme, saisissez le nombre de tâches à exécuter simultanément.
Par exemple, saisissez
1
(valeur par défaut).
Configurez la page Configurations supplémentaires :
Dans le volet de gauche, cliquez sur Configurations supplémentaires. La page Configurations supplémentaires s'ouvre.
Pour chaque bucket Cloud Storage que vous souhaitez installer pour ce job, procédez comme suit :
Dans la section Volume de stockage, cliquez sur Ajouter un volume. La fenêtre Nouveau volume s'affiche.
Dans la fenêtre Nouveau volume, procédez comme suit :
Dans la section Type de volume, sélectionnez Système de fichiers réseau.
Dans le champ Serveur de fichiers, saisissez l'adresse IP du serveur sur lequel se trouve le NFS que vous avez spécifié dans l'exécutable de ce job.
Par exemple, si votre NFS est un partage de fichiers Filestore, spécifiez l'adresse IP de l'instance Filestore, que vous pouvez obtenir en décrivant l'instance Filestore.
Dans le champ Chemin d'accès distant, saisissez un chemin d'accès au NFS que vous avez spécifié à l'étape précédente.
Le chemin d'accès au répertoire NFS doit commencer par
/
, suivi du répertoire racine du NFS.Dans le champ Chemin d'installation, saisissez le chemin d'installation du NFS (MOUNT_PATH) que vous avez spécifié à l'étape précédente.
Cliquez sur OK.
Facultatif : Configurez les autres champs de ce job.
Facultatif : Pour examiner la configuration du job, cliquez sur Aperçu dans le volet de gauche.
Cliquez sur Créer.
La page Détails de la tâche affiche la tâche que vous avez créée.
gcloud
Pour créer un job qui utilise un NFS à l'aide de gcloud CLI, utilisez la commande gcloud batch jobs submit
.
Dans le fichier de configuration JSON du job, installez le NFS dans le champ volumes
.
Créez un fichier json contenant les éléments suivants :
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt" } } ], "volumes": [ { "nfs": { "server": "NFS_IP_ADDRESS", "remotePath": "NFS_PATH" }, "mountPath": "MOUNT_PATH" } ] }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Remplacez les éléments suivants :
NFS_IP_ADDRESS
: adresse IP du serveur NFS. Par exemple, si votre NFS est un partage de fichiers Filestore, spécifiez l'adresse IP de l'instance Filestore, que vous pouvez obtenir en décrivant l'instance Filestore.NFS_PATH
: chemin d'accès au répertoire NFS auquel vous souhaitez que ce job accède. Il doit commencer par/
suivi du répertoire racine du NFS. Par exemple, pour un partage de fichiers Filestore nomméFILE_SHARE_NAME
, le chemin d'accès/FILE_SHARE_NAME
représente le répertoire racine du partage de fichiers, et le chemin d'accès/FILE_SHARE_NAME/subdirectory
représente le sous-répertoiresubdirectory
.MOUNT_PATH
: chemin d'accès au montage que les exécutables du job utilisent pour accéder à ce NFS. Le chemin d'accès doit commencer par/mnt/disks/
, suivi d'un répertoire ou d'un chemin d'accès de votre choix. Par exemple, si vous souhaitez représenter ce NFS avec un répertoire nommémy-nfs
, définissez le chemin d'accès d'installation sur/mnt/disks/my-nfs
.
Exécutez la commande suivante :
gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Remplacez les éléments suivants :
JOB_NAME
: nom du job.LOCATION
: emplacement du job.JSON_CONFIGURATION_FILE
: chemin d'accès à un fichier JSON contenant les détails de configuration du job.
API
Pour créer un job qui utilise un NFS à l'aide de l'API Batch, utilisez la méthode jobs.create
et installez le NFS dans le champ volumes
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}. >> MOUNT_PATH/output_task_${BATCH_TASK_INDEX}.txt"
}
}
],
"volumes": [
{
"nfs": {
"server": "NFS_IP_ADDRESS",
"remotePath": "NFS_PATH"
},
"mountPath": "MOUNT_PATH"
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet de votre projet.LOCATION
: emplacement du job.JOB_NAME
: nom du job.NFS_IP_ADDRESS
: adresse IP du système de fichiers réseau. Par exemple, si votre NFS est un partage de fichiers Filestore, spécifiez l'adresse IP de l'instance Filestore, que vous pouvez obtenir en décrivant l'instance Filestore.NFS_PATH
: chemin d'accès au répertoire NFS auquel vous souhaitez que ce job accède. Il doit commencer par/
suivi du répertoire racine du NFS. Par exemple, pour un partage de fichiers Filestore nomméFILE_SHARE_NAME
, le chemin d'accès/FILE_SHARE_NAME
représente le répertoire racine du partage de fichiers, et le chemin d'accès/FILE_SHARE_NAME/subdirectory
représente un sous-répertoire.MOUNT_PATH
: chemin d'accès au montage que les exécutables du job utilisent pour accéder à ce NFS. Le chemin d'accès doit commencer par/mnt/disks/
, suivi d'un répertoire ou d'un chemin d'accès de votre choix. Par exemple, si vous souhaitez représenter ce NFS avec un répertoire nommémy-nfs
, définissez le chemin d'accès d'installation sur/mnt/disks/my-nfs
.
Java
Node.js
Python
Étapes suivantes
- Si vous rencontrez des problèmes pour créer ou exécuter un job, consultez la section Dépannage.
- Afficher les jobs et les tâches
- Découvrez d'autres options de création de tâches.