AWS ParallelCluster で最初のジョブを実行する - AWS ParallelCluster

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS ParallelCluster で最初のジョブを実行する

このチュートリアルでは、AWS ParallelCluster で最初の「Hello World」ジョブを実行する方法について説明します。

AWS ParallelCluster コマンドラインインターフェイス (CLI) または API を使用する場合、AWS ParallelCluster イメージとクラスターを作成または更新するときに作成された AWS リソースに対してのみ支払いが発生します。詳細については、「AWS ParallelCluster で使用されるサービス AWS」を参照してください。

PCUI はサーバーレスアーキテクチャ上に構築されており、ほとんどの場合、AWS 無料利用枠内で利用できます。詳細については、「PCUI のコスト」を参照してください。

前提条件

インストールを確認する

まず、Node.js の依存関係を含めて、AWS ParallelCluster が正しくインストールされ、設定されていることを確認します。

$ 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」に遷移します。また、出力には、ヘッドノードの publicIpAddressprivateIpAddress が表示されます。

ヘッドノードにログインする

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]

出力には、クラスターに 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 上で正常に実行されていることも示されています。

作成したばかりのクラスターでは、ホームディレクトリのみがクラスターの全ノード間で共有されます。

クラスターの作成と使用の詳細については、「ベストプラクティス」を参照してください。

アプリケーションで共有ソフトウェア、ライブラリ、またはデータが必要な場合は、以下のオプションを検討してください。