以降の手順で、Cloud9 の環境内に クラスタ環境をセットアップするためのプログラムをインストールし、実際にクラスタをセットアップし、利用してみます。
(1) Cloud9 のターミナル上から作業します。。
(2) はじめにParallel Cluster をダウンロード、インストールします。下記コマンドを入力します。この手順は1~2分程度かかります。
pip3 install aws-parallelcluster --user
(3) インストールが終了しましたら、下記コマンドでバージョンを確認してみます。
pcluster version
出力例
{
"version": "3.1.2"
}
(4) 下記コマンドを実行し、設定のために必要なコンフィグファイルを作成します。
cd ~/environment/
pcluster configure --config config.yaml
(5) コマンドを実行すると質問が表示されますので、下記のように入力します。[ ]はデフォルト値でEnterキーを押せば、その値が設定されます。
[ ]内のデフォルトが違う場合`には、表示される一覧の中の番号から選択してください。
AWS Region ID [us-east-1]:
EC2 Key Pair Name [handson202203-kp]: #キーペアは前の手順で作成した handson######-kp を指定
Scheduler [slurm]:
Operating System [alinux2]:
Head node instance type [t2.micro]:
Head node instance type [t2.micro]: c5.large
Number of queues [1]:
Name of queue 1 [queue1]:
Number of compute resources for queue1 [1]: # キューに複数のインスタンスタイプを指定したい場合に指定
Compute instance type for compute resource 1 in queue1 [t2.micro]: c5.xlarge
Maximum instance count [10]: # 最大計算ノード数を指定
Automate VPC creation? (y/n) [n]: y
Availability Zone [us-east-1a]:
Network Configuration [Head node in a public subnet and compute fleet in a private subnet]:
(6) 上記ではVPCを作成するように選択しているので、コンフィグファイルの作成とクラスタが稼働するベース環境(VPCやネットワーク環境など)の作成が開始されます。下記のようなメッセージで作成が開始されます。
Beginning VPC creation. Please do not leave the terminal until the creation is finalized
Creating CloudFormation stack...
作成中は CREATE_IN_PROGRESS
が表示されており、作成が終了すると The stack has been created.
が表示されます。
(7) 下記コマンドで生成されたコンフィグファイルの内容を表示できます。
cat ~/environment/config.yaml
(8) コンフィグファイルにヘッドノードへディスクを追加する設定を入れてみます。下記コマンドを実行します。
cat >> ~/environment/config.yaml << EOF
SharedStorage:
- MountDir: /shared
Name: ebs
StorageType: Ebs
EbsSettings:
VolumeType: gp3
Size: 200
EOF
(9) 下記コマンドで生成されたコンフィグファイルを再度表示し、設定が追加されたことを確認します。
cat ~/environment/config.yaml
(10) 下記コマンドを実行して、クラスタを作成します。
pcluster create-cluster --cluster-name pcluster01 --region us-east-1 --cluster-configuration ~/environment/config.yaml
(11) クラスタの作成が開始されます。約10分ほどかかります。作成状況は pcluster list-clusters
コマンドで確認できます。作成が終了すると clusterStatus
が CREATE_IN_PROGRESS
から CREATE_COMPLETE
に変化します。 CloudFormation の画面でも確認できます。
(12) クラスタの作成が完了したら、下記コマンドでクラスタの詳細を確認できます。
pcluster describe-cluster --cluster-name pcluster01
(13) クラスタのヘッドノードにログインします。
pcluster ssh --cluster-name pcluster01 -i ~/environment/handson202203-kp.pem
(14) 初回はホスト確認がでるのでyesを入力します。
(15) slurm スケジューラを使ってみます。下記コマンドでキューの情報を表示してみます。
sinfo
(16) 下記コマンドを実行し、試しに流すジョブを作ります。これは60秒スリープして、ホストネームを出力するシェルスクリプトです。
cat > job1.sh << EOF
#!/bin/bash
#SBATCH -n 1
sleep 60 ; hostname ; date
EOF
(17) ファイルができたか確認します。
cat job1.sh
(18) キューに今作成したシェルスクリプトをジョブとして投入します。下記コマンドを実行します。
sbatch job1.sh
(19) Submitted batch job x
のようにジョブが投入されたことが分かります。x の部分にはジョブ番号が入ります。
(20) 下記コマンドでキューノ状況が分かります。
squeue
実行すると下記の例のように現在の状況が表示されます。ステータスを表すST
の部分がCF
の場合には計算ノードの起動や準備中です。
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
1 queue1 job1.sh ec2-user CF 0:27 1 queue1-dy-c5xlarge-1
少しすると、ステータスはR
に変わって実行中であることが分かります。
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
1 queue1 job1.sh ec2-user R 0:51 1 queue1-dy-c5xlarge-1
ジョブが終了するとキューの表示から消えます。
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
(21) ジョブの結果を見てみます。slurm-ジョブ番号
のファイルに出力されているので表示してみます。ジョブ番号は、ジョブを投入した際に表示されたものに適宜変更してください。
cat slurm-1.out
下記の例のような表示になります。
queue1-dy-c5xlarge-1
Fri Mar 11 13:48:07 UTC 2022
ここまでで「Parallel Cluster 環境の作成と利用」部分のハンズオンの基礎部分は終了です。この後のオプションや「AWS Batch」のハンズオンを行わない場合は、「後片付け」の項目を行ってください。