

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 上執行您的第一個任務 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)。
+ 您有一個 IAM 角色，具有執行 CLI [`pcluster`](pcluster-v3.md) 所需的[許可](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies)。

## 確認安裝
<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
```

**注意**  
大多數`pcluster`命令都必須指定 AWS 區域 要使用的 。如果未在`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`」。輸出也提供我們前端節點`privateIpAddress`的 `publicIpAddress`和 。

## 登入您的頭部節點
<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)來自動化叢集中每個節點的引導程序。