翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS ParallelCluster で最初のジョブを実行する
このチュートリアルでは、AWS ParallelCluster で最初の「Hello World」ジョブを実行する方法について説明します。
AWS ParallelCluster コマンドラインインターフェイス (CLI) または API を使用する場合、AWS ParallelCluster イメージとクラスターを作成または更新するときに作成された AWS リソースに対してのみ支払いが発生します。詳細については、「AWS ParallelCluster で使用されるサービス AWS」を参照してください。
PCUI はサーバーレスアーキテクチャ上に構築されており、ほとんどの場合、AWS 無料利用枠内で利用できます。詳細については、「PCUI のコスト」を参照してください。
前提条件
-
AWS ParallelCluster がインストールされている。
-
AWS CLI がインストールされ、設定されている。
-
Amazon EC2 のキーペアがある。
インストールを確認する
まず、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
」に遷移します。また、出力には、ヘッドノードの publicIpAddress
と privateIpAddress
が表示されます。
ヘッドノードにログインする
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
上で正常に実行されていることも示されています。
作成したばかりのクラスターでは、ホームディレクトリのみがクラスターの全ノード間で共有されます。
クラスターの作成と使用の詳細については、「ベストプラクティス」を参照してください。
アプリケーションで共有ソフトウェア、ライブラリ、またはデータが必要な場合は、以下のオプションを検討してください。
-
カスタム AWS ParallelCluster AMI の構築 の説明に従って、ソフトウェアを含む、AWS ParallelCluster 対応のカスタム AMI を構築します。
-
AWS ParallelCluster 設定ファイルの StorageSettings オプションを使用して共有ファイルシステムを指定し、インストールしたソフトウェアを指定したマウント場所に保存します。
-
カスタムブートストラップアクション を使用して、クラスターの各ノードのブートストラップ手順を自動化します。