在 Amazon ParallelCluster 上运行首个作业 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon ParallelCluster 上运行首个作业

本教程将引导您完成在 Amazon ParallelCluster 上运行第一个 Hello World 作业的过程

使用 Amazon ParallelCluster 命令行界面 (CLI) 或 API 时,您只需为创建或更新 Amazon ParallelCluster 映像和集群时创建的 Amazon 资源付费。有关更多信息,请参阅 Amazon ParallelCluster 使用的 Amazon 服务

Amazon ParallelCluster UI 基于无服务器的架构而构建,在大多数情况下,可以在 Amazon Free Tier 类别中使用。有关更多信息,请参阅 Amazon ParallelCluster UI 成本

先决条件

验证安装

首先,我们验证 Amazon ParallelCluster(包括 Node.js 依赖项)是否已正确安装和配置。

$ node --version v16.8.0 $ pcluster version { "version": "3.7.0" }

这将返回正在运行的 Amazon ParallelCluster 版本。

创建您的第一个集群

现在应该创建您的第一个集群了。由于本教程的工作负载不是性能密集型的,因此,我们可以使用 t2.micro 的默认实例大小。(对于生产工作负载,您需要选择最适合您的需求的实例大小。) 我们将您的集群命名为 hello-world

$ pcluster create-cluster \ --cluster-name hello-world \ --cluster-configuration hello-world.yaml
注意

必须为大多数 pcluster 命令指定要使用的 Amazon Web Services 区域。如果未在 AWS_DEFAULT_REGION 环境变量或 ~/.aws/config 文件 [default] 部分的 region 设置中指定,则必须在 pcluster 命令行中提供 --region 参数。

如果输出为您提供有关配置的消息,您将需要运行以下命令来配置 Amazon ParallelCluster:

$ pcluster configure --config hello-world.yaml

如果 pcluster create-cluster 命令成功,则将显示类似于以下内容的输出:

{ "cluster": { "clusterName": "hello-world", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:xxx:stack/xxx", "region": "...", "version": "...", "clusterStatus": "CREATE_IN_PROGRESS" } }

您可以使用以下命令监控集群的创建:

$ pcluster describe-cluster --cluster-name hello-world

正在创建集群时,clusterStatus 会报告“CREATE_IN_PROGRESS”。成功创建集群后,clusterStatus 将转变为“CREATE_COMPLETE”。输出还为我们提供头节点的 publicIpAddressprivateIpAddress

登录到头节点

使用您的 OpenSSH pem 文件登录到头节点。

$ pcluster ssh --cluster-name hello-world -i /path/to/keyfile.pem

登录后,请运行命令 sinfo 以验证您的计算节点是否已设置和配置。

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 10 idle~ queue1-dy-queue1t2micro-[1-10]

输出显示我们的集群中有一个队列,最多包含十个节点。

使用 Slurm 运行首个作业

接下来,我们将创建一个作业,该作业睡眠一小段时间,然后输出它自己的主机名。使用以下内容创建名为 hellojob.sh 的文件。

#!/bin/bash sleep 30 echo "Hello World from $(hostname)"

接下来,使用 sbatch 提交作业,并验证其是否运行。

$ sbatch hellojob.sh Submitted batch job 2

现在,您可以查看您的队列并检查该作业的状态。新 Amazon EC2 实例的预置在后台启动。您可以使用 sinfo 命令监控集群实例的状态。

$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 2 queue1 hellojob ec2-user CF 3:30 1 queue1-dy-queue1t2micro-1

输出显示作业已提交给 queue1。请等候 30 秒,以便作业完成,然后再次运行 squeue

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

现在,队列中没有作业,我们可以检查当前目录中的输出。

$ ls -l total 8 -rw-rw-r-- 1 ec2-user ec2-user 57 Sep 1 14:25 hellojob.sh -rw-rw-r-- 1 ec2-user ec2-user 43 Sep 1 14:30 slurm-2.out

在输出中,我们看到一个“out”文件。我们可以查看作业的输出:

$ cat slurm-2.out Hello World from queue1-dy-queue1t2micro-1

输出还显示我们的作业已在实例 queue1-dy-queue1t2micro-1 上成功运行。

在刚创建的集群中,只有主目录在集群的所有节点之间共享。

要了解有关创建和使用集群的更多信息,请参阅最佳实践

如果您的应用程序需要共享软件、库或数据,请考虑以下选项: