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

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

在上运行你的第一份作业 Amazon ParallelCluster

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

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

Amazon ParallelCluster 用户界面基于无服务器架构构建,在大多数情况下,您可以在 Amazon 免费套餐类别中使用它。有关更多信息,请参阅 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
注意

必须 Amazon Web Services 区域 为大多数pcluster命令指定要使用的。如果未在 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 上成功运行。

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

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

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