View a markdown version of this page

Jobs in einem Cluster im Modus mit mehreren Warteschlangen ausführen - AWS ParallelCluster

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Jobs in einem Cluster im Modus mit mehreren Warteschlangen ausführen

In diesem Tutorial erfahren Sie, wie Sie Ihren ersten "Hello World" -Job im Modus AWS ParallelCluster mit mehreren Warteschlangen ausführen.

Wenn Sie die AWS ParallelCluster Befehlszeilenschnittstelle (CLI) oder die API verwenden, zahlen Sie nur für die AWS Ressourcen, die beim Erstellen oder Aktualisieren von AWS ParallelCluster Images und Clustern erstellt werden. Weitere Informationen finden Sie unter AWS Dienste, die von verwendet werden AWS ParallelCluster.

Voraussetzungen

Konfigurieren Sie Ihren Cluster

Stellen Sie zunächst sicher, dass die Installation korrekt AWS ParallelCluster ist, indem Sie den folgenden Befehl ausführen.

$ pcluster version

Mehr über pcluster version erfahren Sie unter pcluster-Version.

Dieser Befehl gibt die laufende Version von zurück AWS ParallelCluster.

Führen Sie als Nächstes Folgendes aus, pcluster configure um eine grundlegende Konfigurationsdatei zu generieren. Folgen Sie allen Anweisungen, die auf diesen Befehl folgen.

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

Weitere Informationen zum Befehl pcluster configure finden Sie unter pcluster konfigurieren.

Nachdem Sie diesen Schritt abgeschlossen haben, wird eine grundlegende Konfigurationsdatei mit dem Namen multi-queue-mode.yaml angezeigt. Diese Datei enthält eine grundlegende Clusterkonfiguration.

Im nächsten Schritt ändern Sie Ihre neue Konfigurationsdatei und starten einen Cluster mit mehreren Warteschlangen.

Anmerkung

Einige Instanzen, die in diesem Tutorial verwendet werden, sind nicht für das kostenlose Kontingent geeignet.

Ändern Sie für dieses Tutorial Ihre Konfigurationsdatei so, dass sie der folgenden Konfiguration entspricht. Die rot hervorgehobenen Elemente stehen für Ihre Konfigurationsdateiwerte. Behalten Sie Ihre eigenen Werte bei.

Region: region-id Image: Os: alinux2023 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

Erstellen Ihres -Clusters

Erstellen Sie einen Cluster, der auf der multi-queue-cluster Grundlage Ihrer Konfigurationsdatei benannt ist.

$ 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.16.1", "clusterStatus": "CREATE_IN_PROGRESS" } }

Weitere Informationen zum Befehl pcluster create-cluster finden Sie unter pcluster create-cluster.

Führen Sie den folgenden Befehl aus, um den Status des Clusters zu überprüfen.

$ 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.16.1", "clusterStatus": "CREATE_IN_PROGRESS" } }

Wenn der Cluster erstellt wird, wird das clusterStatus Feld angezeigtCREATE_COMPLETE.

Melden Sie sich beim Hauptknoten an

Verwenden Sie Ihre private SSH-Schlüsseldatei, um sich am Kopfknoten anzumelden.

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

Mehr über pcluster ssh erfahren Sie unter pcluster ssh.

Führen Sie nach der Anmeldung den sinfo Befehl aus, um zu überprüfen, ob Ihre Scheduler-Warteschlangen eingerichtet und konfiguriert sind.

Weitere Informationen sinfo dazu finden Sie unter sinfo in der Dokumentation. 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]

Die Ausgabe zeigt, dass Sie einen t2.micro c5.xlarge Rechenknoten in dem idle Zustand haben, der in Ihrem Cluster verfügbar ist.

Andere Knoten befinden sich alle im Energiesparmodus, was durch das ~ Suffix im Knotenstatus gekennzeichnet ist, ohne dass sie von Amazon EC2-Instances unterstützt werden. Die Standardwarteschlange wird durch ein * Suffix hinter ihrem Warteschlangennamen gekennzeichnet. spotist Ihre Standard-Auftragswarteschlange.

Führen Sie den Job im Modus mit mehreren Warteschlangen aus

Versuchen Sie als Nächstes, einen Job auszuführen, um eine Weile zu schlafen. Der Job gibt später seinen eigenen Hostnamen aus. Stellen Sie sicher, dass dieses Skript vom aktuellen Benutzer ausgeführt werden kann.

$ 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

Senden Sie den Job mit dem sbatch Befehl ab. Fordern Sie mit der -N 2 Option zwei Knoten für diesen Job an und stellen Sie sicher, dass der Job erfolgreich übermittelt wurde. Weitere Informationen sbatch dazu finden Sie sbatch in der Slurm-Dokumentation.

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

Mit dem squeue Befehl können Sie Ihre Warteschlange einsehen und den Status des Jobs überprüfen. Da Sie keine bestimmte Warteschlange angegeben haben, wird die Standardwarteschlange (spot) verwendet. Weitere Informationen dazu squeue finden Sie squeue in der Slurm Dokumentation.

$ 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

Die Ausgabe zeigt, dass die Aufgabe zurzeit ausgeführt wird. Warten Sie, bis der Job abgeschlossen ist. Das dauert etwa 30 Sekunden. Dann renne squeue erneut.

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

Jetzt, da alle Jobs in der Warteschlange abgeschlossen sind, suchen Sie nach der Ausgabedatei, die slurm-1.out in Ihrem aktuellen Verzeichnis benannt ist.

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

Die Ausgabe zeigt, dass der Job erfolgreich auf den spot-st-t2micro-1 spot-st-c5xlarge-1 End-Knoten ausgeführt wurde.

Senden Sie nun denselben Job weiter, indem Sie mit den folgenden Befehlen Einschränkungen für bestimmte Instanzen angeben.

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

Sie haben diese Parameter verwendet fürsbatch:

  • -N 3— fordert drei Knoten an.

  • -p spot— leitet den Job an die spot Warteschlange weiter. Sie können einen Job auch an die ondemand Warteschlange senden, indem Sie Folgendes angeben-p ondemand.

  • -C "[c5.xlarge*1&t2.micro*2]"— gibt die spezifischen Knoteneinschränkungen für diesen Job an. Dies erfordert, dass ein c5.xlarge t2.micro Knoten und zwei Knoten für diesen Job verwendet werden.

Führen Sie den sinfo Befehl aus, um die Knoten und Warteschlangen anzuzeigen. Warteschlangen in AWS ParallelCluster werden Partitionen in genannt. 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]

Die Knoten werden hochgefahren. Dies wird durch das # Suffix auf dem Knotenstatus angezeigt. Führen Sie den squeue Befehl aus, um Informationen zu den Jobs im Cluster anzuzeigen.

$ 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

Ihr Job befindet sich im Status CF (CONFIGURING) und wartet darauf, dass die Instances hochskaliert werden und dem Cluster beitreten.

Nach etwa drei Minuten sind die Knoten verfügbar und der Job wechselt in den Status 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

Der Job ist abgeschlossen und alle drei Knoten befinden sich im idle Status.

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

Wenn sich keine Jobs mehr in der Warteschlange befinden, suchen Sie slurm-2.out in Ihrem lokalen Verzeichnis nach.

$ 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

Dies ist der endgültige Status des Clusters.

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

Nachdem Sie sich vom Cluster abgemeldet haben, können Sie ihn bereinigen, indem Sie Folgendes ausführenpcluster delete-cluster. Weitere Informationen erhalten Sie unter pcluster list-clusters und 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" } }