Esecuzione di processi in un cluster in modalità coda multipla - AWS ParallelCluster

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esecuzione di processi in un cluster in modalità coda multipla

Questo tutorial spiega come eseguire il primo "Hello World" job in AWS ParallelCluster modalità coda multipla.

Quando si utilizza l'interfaccia a riga di AWS ParallelCluster comando (CLI) o l'API, si pagano solo le AWS risorse create quando si creano o si aggiornano AWS ParallelCluster immagini e cluster. Per ulteriori informazioni, consulta AWS servizi usati da AWS ParallelCluster.

L' AWS ParallelCluster interfaccia utente è basata su un'architettura serverless ed è possibile utilizzarla nella categoria AWS Free Tier nella maggior parte dei casi. Per ulteriori informazioni, consulta AWS ParallelClusterCosti dell'interfaccia utente.

Prerequisiti

Configura il tuo cluster

Innanzitutto, verifica che AWS ParallelCluster sia installato correttamente eseguendo il comando seguente.

$ pcluster version

Per ulteriori informazioni su pcluster version, consulta pcluster version.

Questo comando restituisce la versione in esecuzione di AWS ParallelCluster.

Quindi, pcluster configure esegui per generare un file di configurazione di base. Segui tutte le istruzioni che seguono questo comando.

$ pcluster configure --config multi-queue-mode.yaml

Per ulteriori informazioni sul comando pcluster configure, consulta pcluster configure.

Dopo aver completato questo passaggio, viene visualizzato un file di configurazione di base denominatomulti-queue-mode.yaml. Questo file contiene una configurazione di base del cluster.

Nel passaggio successivo, si modifica il nuovo file di configurazione e si avvia un cluster con più code.

Nota

Alcune istanze utilizzate in questo tutorial non sono idonee al livello gratuito.

Per questo tutorial, modifica il file di configurazione in modo che corrisponda alla configurazione seguente. Gli elementi evidenziati in rosso rappresentano i valori del file di configurazione. Mantieni i tuoi valori.

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

Creazione di un cluster

Crea un cluster denominato in multi-queue-cluster base al tuo file di configurazione.

$ 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" } }

Per ulteriori informazioni sul comando pcluster create-cluster, consulta pcluster create-cluster.

Per verificare lo stato del cluster, esegui il comando seguente.

$ 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" } }

Quando il cluster viene creato, il clusterStatus campo viene visualizzatoCREATE_COMPLETE.

Accedere al nodo principale

Usa il tuo file di chiave SSH privato per accedere al nodo principale.

$ pcluster ssh --cluster-name multi-queue-cluster -i ~/path/to/yourkeyfile.pem

Per ulteriori informazioni su pcluster ssh, consulta pcluster ssh.

Dopo aver effettuato l'accesso, esegui il sinfo comando per verificare che le code dello scheduler siano impostate e configurate.

Per maggiori informazioni in meritosinfo, consulta sinfo nella documentazione. Slurm

$ 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]

L'output mostra che hai uno t2.micro e un nodo di c5.xlarge calcolo nello idle stato disponibile nel tuo cluster.

Gli altri nodi sono tutti nello stato di risparmio energetico, indicato dal ~ suffisso nello stato del nodo, senza istanze Amazon EC2 che li supportano. La coda predefinita è indicata da un * suffisso dopo il nome della coda. spotè la tua coda di lavoro predefinita.

Esegue il lavoro in modalità coda multipla

Quindi, prova a eseguire un lavoro per dormire per qualche istante. Successivamente, il job restituisce il proprio nome host. Assicuratevi che questo script possa essere eseguito dall'utente corrente.

$ 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

Inviate il lavoro utilizzando il sbatch comando. Richiedi due nodi per questo lavoro con l'-N 2opzione e verifica che il lavoro sia stato inviato correttamente. Per ulteriori informazioni sbatchin meritosbatch, consulta la documentazione di Slurm.

$ sbatch -N 2 --wrap "srun hellojob.sh" Submitted batch job 1

È possibile visualizzare la coda e controllare lo stato del lavoro con il comando. squeue Poiché non è stata specificata una coda specifica, viene utilizzata la coda predefinita (spot). Per ulteriori informazioni in meritosqueue, consulta la squeueSlurmdocumentazione.

$ 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

L'output indica che il processo è attualmente in un stato di esecuzione. Attendi che il lavoro finisca. Questa operazione richiede circa 30 secondi. Quindi, corri squeue di nuovo.

$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)

Ora che tutti i lavori in coda sono terminati, cercate il file di output denominato slurm-1.out nella directory corrente.

$ cat slurm-1.out Hello World from spot-st-t2micro-1 Hello World from spot-st-c5xlarge-1

L'output mostra che il processo è stato eseguito correttamente sui spot-st-c5xlarge-1 nodi spot-st-t2micro-1 and.

Ora inviate lo stesso lavoro specificando i vincoli per istanze specifiche con i seguenti comandi.

$ sbatch -N 3 -p spot -C "[c5.xlarge*1&t2.micro*2]" --wrap "srun hellojob.sh" Submitted batch job 2

Hai usato questi parametri per: sbatch

  • -N 3— richiede tre nodi.

  • -p spot— invia il lavoro alla spot coda. È inoltre possibile inviare un lavoro alla ondemand coda specificando. -p ondemand

  • -C "[c5.xlarge*1&t2.micro*2]"— specifica i vincoli di nodo specifici per questo lavoro. Ciò richiede l'utilizzo di un c5.xlarge nodo e due t2.micro nodi per questo lavoro.

Esegui il sinfo comando per visualizzare i nodi e le code. Le code in entrata AWS ParallelCluster sono chiamate partizioni in. 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]

I nodi si stanno accendendo. Ciò è indicato dal # suffisso sullo stato del nodo. Esegui il squeue comando per visualizzare le informazioni sui lavori nel 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

Il processo è nello stato CF (CONFIGURING), in attesa che le istanze aumentino di dimensioni e si uniscano al cluster.

Dopo circa tre minuti, i nodi sono disponibili e il processo entra nello stato R (RUNNING).

$ 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

Il processo termina e tutti e tre i nodi sono nello idle stato.

$ 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]

Quindi, dopo che nessun lavoro rimane in coda, cercate slurm-2.out nella vostra rubrica locale.

$ 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

Questo è lo stato finale del 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]

Dopo esserti disconnesso dal cluster, puoi ripulirlo pcluster delete-cluster eseguendo. Per ulteriori informazioni, consultare pcluster list-clusters e 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" } }