Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exécution de tâches dans un cluster en mode de files d'attente multiples
Ce didacticiel explique comment exécuter votre « premier »Hello World« fonctionne en AWS ParallelCluster mode file d'attente multiple.
Lorsque vous utilisez l'interface de ligne de AWS ParallelCluster commande (CLI) ouAPI, vous ne payez que pour les AWS ressources créées lorsque vous créez ou mettez à jour AWS ParallelCluster des images et des clusters. Pour de plus amples informations, veuillez consulter AWS services utilisés par AWS ParallelCluster.
L' AWS ParallelCluster interface utilisateur repose sur une architecture sans serveur et vous pouvez l'utiliser dans la catégorie AWS Free Tier dans la plupart des cas. Pour de plus amples informations, veuillez consulter AWS ParallelCluster Coûts d'interface utilisateur.
Prérequis
-
AWS ParallelCluster est installé.
-
Le AWS CLI est installé et configuré.
-
Vous possédez une paire de EC2 clés Amazon.
-
Vous avez un IAM rôle doté des autorisations requises pour exécuter le pclusterCLI.
Configurez votre cluster
Tout d'abord, vérifiez qu' AWS ParallelCluster il est correctement installé en exécutant la commande suivante.
$
pcluster version
Pour plus d'informations sur pcluster version
, consultez pcluster version.
Cette commande renvoie la version en cours d'exécution de AWS ParallelCluster.
Exécutez ensuite pcluster configure
pour générer un fichier de configuration de base. Suivez toutes les instructions qui suivent cette commande.
$
pcluster configure --config multi-queue-mode.yaml
Pour plus d'informations sur la commande pcluster configure
, consultez pcluster configure.
Une fois cette étape terminée, un fichier de configuration de base nommé multi-queue-mode.yaml
apparaît. Ce fichier contient une configuration de base du cluster.
À l'étape suivante, vous modifiez votre nouveau fichier de configuration et lancez un cluster avec plusieurs files d'attente.
Note
Certaines instances utilisées dans ce didacticiel ne sont pas éligibles au niveau gratuit.
Pour ce didacticiel, modifiez votre fichier de configuration pour qu'il corresponde à la configuration suivante. Les éléments surlignés en rouge représentent les valeurs de votre fichier de configuration. Gardez vos propres valeurs.
Region:
region-id
Image: Os: alinux2 HeadNode: InstanceType: c5.xlarge Networking: SubnetId:subnet-abcdef01234567890
Ssh: KeyName:yourkeypair
Scheduling: Scheduler: slurm SlurmQueues: - Name: spot ComputeResources: - Name: c5xlarge InstanceType: c5.xlarge MinCount: 1 MaxCount: 10 - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: -subnet-abcdef01234567890
- Name: ondemand ComputeResources: - Name: c52xlarge InstanceType: c5.2xlarge MinCount: 0 MaxCount: 10 Networking: SubnetIds: -subnet-021345abcdef6789
Créer votre cluster
Créez un cluster nommé en multi-queue-cluster
fonction de votre fichier de configuration.
$
pcluster create-cluster --cluster-name multi-queue-cluster --cluster-configuration multi-queue-mode.yaml
{ "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.7.0", "clusterStatus": "CREATE_IN_PROGRESS" } }
Pour plus d'informations sur la commande pcluster create-cluster
, consultez pcluster create-cluster.
Pour vérifier l'état du cluster, exécutez la commande suivante.
$
pcluster list-clusters
{ "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.7.0", "clusterStatus": "CREATE_IN_PROGRESS" } }
Lorsque le cluster est créé, le clusterStatus
champ s'afficheCREATE_COMPLETE
.
Connectez-vous au nœud principal
Utilisez votre fichier de SSH clé privée pour vous connecter au nœud principal.
$
pcluster ssh --cluster-name multi-queue-cluster -i
~/path/to/yourkeyfile.pem
Pour plus d'informations sur pcluster ssh
, consultez pcluster ssh.
Une fois connecté, exécutez la sinfo
commande pour vérifier que les files d'attente de votre planificateur sont installées et configurées.
Pour plus d'informations sursinfo
, voir sinfo
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 18 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[1-9] spot* up infinite 2 idle spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]
La sortie indique que vous disposez d'un t2.micro
et d'un nœud de c5.xlarge
calcul dans l'idle
état qui sont disponibles dans votre cluster.
Les autres nœuds sont tous en état d'économie d'énergie, indiqué par le ~
suffixe dans l'état du nœud, sans qu'aucune EC2 instance Amazon ne les prenne en charge. La file d'attente par défaut est indiquée par un *
suffixe après son nom. spot
est votre file d'attente de tâches par défaut.
Exécuter le job en mode file d'attente multiple
Ensuite, essayez d'exécuter une tâche pour dormir pendant un moment. La tâche génère ensuite son propre nom d'hôte. Assurez-vous que ce script peut être exécuté par l'utilisateur actuel.
$
tee <<EOF hellojob.sh
#!/bin/bash sleep 30 echo "Hello World from \$(hostname)" EOF
$
chmod +x hellojob.sh
$
ls -l hellojob.sh
-rwxrwxr-x 1 ec2-user ec2-user 57 Sep 23 21:57 hellojob.sh
Soumettez le travail à l'aide de la sbatch
commande. Demandez deux nœuds pour cette tâche avec l'-N 2
option, et vérifiez que la tâche est correctement soumise. Pour plus d'informations sur sbatch
, consultez .sbatch
$
sbatch -N 2 --wrap "srun hellojob.sh"
Submitted batch job 1
Vous pouvez consulter votre file d'attente et vérifier l'état de la tâche à l'aide de la squeue
commande. Comme vous n'avez pas spécifié de file d'attente spécifique, la file d'attente par défaut (spot
) est utilisée. Pour plus d'informations sur squeue
, consultez .squeue
$
squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 1 spot wrap ec2-user R 0:10 2 spot-st-c5xlarge-1,spot-st-t2micro-1
La sortie indique que la tâche est actuellement en cours d'exécution. Attendez que le travail soit terminé. Cela prend environ 30 secondes. Ensuite, courez squeue
à nouveau.
$
squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
Maintenant que les tâches de la file d'attente sont toutes terminées, recherchez le fichier de sortie nommé slurm-1.out
dans votre répertoire actuel.
$
cat slurm-1.out
Hello World from spot-st-t2micro-1 Hello World from spot-st-c5xlarge-1
Le résultat indique que la tâche s'est exécutée avec succès sur les spot-st-c5xlarge-1
nœuds spot-st-t2micro-1
et.
Soumettez maintenant le même travail en spécifiant des contraintes pour des instances spécifiques à l'aide des commandes suivantes.
$
sbatch -N 3 -p spot -C "[c5.xlarge*1&t2.micro*2]" --wrap "srun hellojob.sh"
Submitted batch job 2
Vous avez utilisé ces paramètres pour sbatch
:
-
-N 3
— demande trois nœuds. -
-p spot
— soumet la tâche à laspot
file d'attente. Vous pouvez également soumettre une tâche à laondemand
file d'attente en spécifiant-p ondemand
. -
-C "[c5.xlarge*1&t2.micro*2]"
— spécifie les contraintes de nœud spécifiques pour cette tâche. Cela demande qu'unc5.xlarge
nœud et deuxt2.micro
nœuds soient utilisés pour cette tâche.
Exécutez la sinfo
commande pour afficher les nœuds et les files d'attente. Les files d'attente AWS ParallelCluster sont appelées partitions dans Slurm.
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 1 alloc# spot-dy-t2micro-1 spot* up infinite 17 idle~ spot-dy-c5xlarge-[2-10],spot-dy-t2micro-[2-9] spot* up infinite 1 mix spot-st-c5xlarge-1 spot* up infinite 1 alloc spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]
Les nœuds s'allument. Cela est indiqué par le #
suffixe sur l'état du nœud. Exécutez le squeue commande pour afficher les informations relatives aux tâches du cluster.
$
squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 spot wrap ec2-user CF 0:04 3 spot-dy-c5xlarge-1,spot-dy-t2micro-1,spot-st-t2micro-1
Votre travail est dans le CF
(CONFIGURING), en attente de la montée en puissance des instances et de leur intégration au cluster.
Au bout de trois minutes environ, les nœuds sont disponibles et la tâche entre dans le champ R
(RUNNING) état.
$
squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 spot wrap ec2-user R 0:07 3 spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1
La tâche est terminée et les trois nœuds sont dans l'idle
état.
$
squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 17 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9] spot* up infinite 3 idle spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]
Ensuite, une fois qu'aucune tâche ne reste dans la file d'attente, slurm-2.out
recherchez-la dans votre répertoire local.
$
cat slurm-2.out
Hello World from spot-st-t2micro-1 Hello World from spot-dy-t2micro-1 Hello World from spot-st-c5xlarge-1
Il s'agit de l'état final du cluster.
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST spot* up infinite 17 idle~ spot-dy-c5xlarge-[1-9],spot-dy-t2micro-[2-9] spot* up infinite 3 idle spot-dy-t2micro-1,spot-st-c5xlarge-1,spot-st-t2micro-1 ondemand up infinite 10 idle~ ondemand-dy-c52xlarge-[1-10]
Après vous être déconnecté du cluster, vous pouvez le nettoyer en exécutantpcluster delete-cluster
. Pour plus d’informations, consultez pcluster list-clusters et pcluster delete-cluster.
$
pcluster list-clusters
{ "clusters": [ { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "CREATE_COMPLETE", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.1.4", "clusterStatus": "CREATE_COMPLETE" } ] }
$
pcluster delete-cluster -n multi-queue-cluster
{ "cluster": { "clusterName": "multi-queue-cluster", "cloudformationStackStatus": "DELETE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:123456789012:stack/multi-queue-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "eu-west-1", "version": "3.1.4", "clusterStatus": "DELETE_IN_PROGRESS" } }