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

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

在 Amazon ParallelCluster 上运行首个作业

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

先决条件

验证安装

首先,我们验证 Amazon ParallelCluster 是否已正确安装和配置。

$ pcluster version

这将返回正在运行的 Amazon ParallelCluster 版本。如果输出为您提供有关配置的消息,您将需要运行以下命令来配置 Amazon ParallelCluster:

$ pcluster configure

创建您的第一个集群

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

我们将您的集群称作 hello-world。

$ pcluster create hello-world

创建集群时,您会看到类似以下内容的输出:

Starting: hello-world Status: parallelcluster-hello-world - CREATE_COMPLETE MasterPublicIP = 54.148.x.x ClusterUser: ec2-user MasterPrivateIP = 192.168.x.x GangliaPrivateURL = http://192.168.x.x/ganglia/ GangliaPublicURL = http://54.148.x.x/ganglia/

消息 CREATE_COMPLETE 显示该集群已成功创建。输出还为我们提供头节点的公有 IP 地址和私有 IP 地址。我们需要此 IP 以进行登录。

登录到头节点

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

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

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

$ qhost HOSTNAME ARCH NCPU NSOC NCOR NTHR LOAD MEMTOT MEMUSE SWAPTO SWAPUS ---------------------------------------------------------------------------------------------- global - - - - - - - - - - ip-192-168-1-125 lx-amd64 2 1 2 2 0.15 3.7G 130.8M 1024.0M 0.0 ip-192-168-1-126 lx-amd64 2 1 2 2 0.15 3.7G 130.8M 1024.0M 0.0

输出显示我们的集群中有两个计算节点,两者都有 2 个线程可用。

使用 SGE 运行首个作业

注意

此示例仅适用于版本 2.11.4 及以前的 Amazon ParallelCluster 版本。从版本 2.11.5 开始,Amazon ParallelCluster 不支持使用 SGE 或 Torque 调度器。

接下来,我们将创建一个作业,该作业睡眠一小段时间,然后输出它自己的主机名。

使用以下内容创建名为 hellojob.sh 的文件。

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

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

$ qsub hellojob.sh Your job 1 ("hellojob.sh") has been submitted

现在,您可以查看您的队列并检查该作业的状态。

$ qstat job-ID prior name user state submit/start at queue slots ja-task-ID ----------------------------------------------------------------------------------------------------------------- 1 0.55500 hellojob.s ec2-user r 03/24/2015 22:23:48 all.q@ip-192-168-1-125.us-west 1

输出显示此作业目前处于运行状态。请等候 30 秒,以便作业完成,然后再次运行 qstat

$ qstat $

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

$ ls -l total 8 -rw-rw-r-- 1 ec2-user ec2-user 48 Mar 24 22:34 hellojob.sh -rw-r--r-- 1 ec2-user ec2-user 0 Mar 24 22:34 hellojob.sh.e1 -rw-r--r-- 1 ec2-user ec2-user 34 Mar 24 22:34 hellojob.sh.o1

在输出中,我们会看到作业脚本中的“e1”和“o1”文件。由于 e1 文件为空,因此没有内容输出到 stderr。如果我们查看 o1 文件,我们可以看到作业的输出。

$ cat hellojob.sh.o1 Hello World from ip-192-168-1-125

输出还显示我们的作业已在实例 ip-192-168-1-125 上成功运行。

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