

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

# 在上运行你的第一份作业 Amazon ParallelCluster
<a name="tutorials_01_hello_world"></a>

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

**先决条件**
+ Amazon ParallelCluster [已安装](install.md)。
+  Amazon CLI [已安装并配置。](https://docs.amazonaws.cn/cli/latest/userguide/getting-started-install.html)
+ 你有一个 [EC2 key pair](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。
+ 您拥有具有运行 [`pcluster`](pcluster.md) CLI 所需的[权限](iam.md#example-parallelcluser-policies)的 IAM 角色。

## 验证安装
<a name="verifying-your-installation"></a>

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

```
$ pcluster version
```

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

```
$ pcluster configure
```

## 创建您的第一个集群
<a name="creating-your-first-cluster"></a>

现在应该创建您的第一个集群了。由于本教程的工作负载不是性能密集型的，因此，我们可以使用 `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 以进行登录。

## 登录到头节点
<a name="logging-into-your-head-node"></a>

使用您的 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
<a name="running-your-first-job-using-sge"></a>

**注意**  
此示例仅适用于 Amazon ParallelCluster 2.11.4 及以下的版本。从 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` 上成功运行。

要了解有关创建和使用集群的更多信息，请参阅[最佳实践](best-practices.md)。