

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

# 在上运行你的第一份作业 AWS ParallelCluster
<a name="tutorials-running-your-first-job-on-version-3"></a>

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

使用 AWS ParallelCluster 命令行界面 (CLI) 或 API 时，您只需为创建或更新 AWS ParallelCluster 映像和集群时创建的 AWS 资源付费。有关更多信息，请参阅 [AWS 使用的服务 AWS ParallelCluster](aws-services-v3.md)。

**先决条件**
+ AWS ParallelCluster [已安装](install-v3-parallelcluster.md)。
+  AWS CLI [已安装并配置。](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ 您有一个 [Amazon EC2 密钥对](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。
+ 您拥有具有运行 [`pcluster`](pcluster-v3.md) CLI 所需的[权限](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies)的 IAM 角色。

## 验证安装
<a name="tutorial-1stjob-verify-install"></a>

 首先，我们验证安装和配置 AWS ParallelCluster 是否正确，包括 Node.js 依赖项。

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

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

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

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

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

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

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

```
$ pcluster configure --config hello-world.yaml
```

 如果 [`pcluster create-cluster`](pcluster.create-cluster-v3.md) 命令成功，则将显示类似于以下内容的输出：

```
{
  "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`。

## 登录到头节点
<a name="tutorial-1stjob-logging-in-head-node"></a>

 使用您的 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 运行首个作业
<a name="tutorial-1stjob-first-slurm-job"></a>

接下来，我们将创建一个作业，该作业睡眠一小段时间，然后输出它自己的主机名。使用以下内容创建名为 `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` 上成功运行。

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

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

如果您的应用程序需要共享软件、库或数据，请考虑以下选项：
+ 如中所述，构建包含您的软件的 AWS ParallelCluster 已启用的自定义 AMI [构建自定义 AWS ParallelCluster AMI](building-custom-ami-v3.md)。
+ 使用 AWS ParallelCluster 配置文件中的[StorageSettings](SharedStorage-v3.md)选项来指定共享文件系统并将已安装的软件存储在指定的装载位置。
+ 使用[自定义引导操作](custom-bootstrap-actions-v3.md)自动执行集群中每个节点的引导过程。