本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 AWS ParallelCluster 上运行首个作业
本教程将引导您完成在 AWS ParallelCluster 上运行第一个 Hello World 作业的过程
使用 AWS ParallelCluster 命令行界面 (CLI) 或 API 时,您只需为创建或更新 AWS ParallelCluster 映像和集群时创建的 AWS 资源付费。有关更多信息,请参阅 AWS ParallelCluster 使用的 AWS 服务。
PCUI 基于无服务器的架构而构建,在大多数情况下,可以在 AWS Free Tier 类别中使用。有关更多信息,请参阅 PCUI 成本。
先决条件
-
AWS ParallelCluster已安装 安装 AWS ParallelCluster 命令行界面 (CLI)。
-
您有一个 Amazon EC2 密钥对。
验证安装
首先,我们验证 AWS ParallelCluster(包括 Node.js 依赖项)是否已正确安装和配置。
$
node --version
v16.8.0
$
pcluster version
{
"version": "3.7.0"
}
这将返回正在运行的 AWS ParallelCluster 版本。
创建您的第一个集群
现在应该创建您的第一个集群了。由于本教程的工作负载不是性能密集型的,因此,我们可以使用 t2.micro
的默认实例大小。(对于生产工作负载,您需要选择最适合您的需求的实例大小。) 我们将您的集群命名为 hello-world
。
$
pcluster create-cluster \ --cluster-name hello-world \ --cluster-configuration hello-world.yaml
注意
必须为大多数 pcluster
命令指定要使用的 AWS 区域。如果未在 AWS_DEFAULT_REGION
环境变量或 ~/.aws/config
文件 [default]
部分的 region
设置中指定,则必须在 pcluster
命令行中提供 --region
参数。
如果输出为您提供有关配置的消息,您将需要运行以下命令来配置 AWS 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
”。输出还为我们提供头节点的 publicIpAddress
和 privateIpAddress
。
登录到头节点
使用您的 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
上成功运行。
在刚创建的集群中,只有主目录在集群的所有节点之间共享。
要了解有关创建和使用集群的更多信息,请参阅最佳实践。
如果您的应用程序需要共享软件、库或数据,请考虑以下选项:
-
按照构建自定义 AWS ParallelCluster AMI 中所述,构建启用了 AWS ParallelCluster 并且包含您的软件的自定义 AMI。
-
在 AWS ParallelCluster 配置文件中使用 StorageSettings 选项指定共享文件系统,并将已安装的软件存储在指定的挂载位置。
-
使用自定义引导操作自动执行集群中每个节点的引导过程。