Open Composerインストールマニュアル
1. インストール
Open ComposerはOpen OnDemand上で動作します。Open OnDemandのアプリケーションディレクトリ/var/www/ood/apps/sys/にOpen Composerを保存してください。
# cd /var/www/ood/apps/sys/ # git clone https://github.com/RIKEN-RCCS/OpenComposer.git
2. 設定
./conf.yml.erb.sampleを参考にして./conf.yml.erbを作成してください。
# cd OpenComposer # cp conf.yml.erb.sample conf.yml.erb
| 項目名 | 設定内容 |
|---|---|
| apps_dir | アプリケーションのディレクトリ |
| scheduler | 利用するスケジューラ(slurm、pbspro、sge、fujitsu_tcs) |
| clusters | クラスタの定義 |
| data_dir | 投入したジョブの情報の保存先(デフォルトは${HOME}/composer) |
| login_node | Open OnDemandのWebターミナルを起動した際のログイン先 |
| ssh_wrapper | SSHを用いて他のノードのジョブスケジューラを用いる場合のコマンド |
| bin | ジョブスケジューラのコマンドのパス |
| bin_overrides | ジョブスケジューラの各コマンドのパス |
| sge_root | Grid Engineのルート用ディレクトリ(SGE_ROOT) |
| history | 履歴ページの追加表示項目 |
| footer | フッタに記載する文字 |
| thumbnail_width | ホームページの各アプリケーションのサムネイルの横幅 |
| navbar_color | ナビゲーションバーの色 |
| dropdown_color | ドロップダウンメニューの色 |
| footer_color | フッタの色 |
| category_color | ホームページのカテゴリの背景色 |
| description_color | アプリケーションページのアプリケーション説明の背景色 |
| form_color | アプリケーションページのテキストエリアの背景色 |
apps_dirおよびschedulerは必須です(schedulerはclustersの中に定義しても構いません)。
2.1. clusters
複数のクラスタを設定します。本設定では、scheduler、login_node、ssh_wrapper、bin、bin_overrides、sge_rootがクラスタ毎に設定できます。1つのクラスタのみを使う場合、本設定は省略可能です。
下記では、fugakuとprepostというクラスタにおいて、それぞれfujitsu_tcsとslurmのジョブスケジューラを利用することを定義しています。
clusters:
fugaku:
scheduler: "fujitsu_tcs"
prepost:
scheduler: "slurm"
bin_overrides:
sbatch: "/usr/local/bin/sbatch"
下記では、fugakuとprepostというクラスタにおいて、両方ともslurmのジョブスケジューラを利用していますが、異なるマシンからslurmを実行することを定義しています。
scheduler: "slurm"
clusters:
fugaku:
ssh_wrapper "ssh fugaku.example.net"
prepost:
ssh_wrapper "ssh prepost.example.net"
2.2. bin_overrides
各コマンドのパスを設定します。本設定は省略可能です。
ジョブスケジューラがslurmの場合は、sbatch、scontrol、scancel、sacctを設定できます。
bin_overrides: sbatch: "/usr/local/bin/sbatch" scontrol: "/usr/local/bin/scontrol" scancel: "/usr/local/bin/scancel" sacct: "/usr/local/bin/sacct"
ジョブスケジューラがpbsproの場合は、qsub、qstat、qdelを設定できます。
bin_overrides: qsub: "/usr/local/bin/qsub" qstat: "/usr/local/bin/qstat" qdel: "/usr/local/bin/qdel"
ジョブスケジューラがsgeの場合は、qsub、qstat、qdel、qacctを設定できます。
bin_overrides: qsub: "/usr/local/bin/qsub" qstat: "/usr/local/bin/qstat" qdel: "/usr/local/bin/qdel" qacct: "/usr/local/bin/qacct"
ジョブスケジューラがfujitsu_tcsの場合は、pjsub、pjstat、pjdelを設定できます。
bin_overrides: pjsub: "/usr/local/bin/pjsub" pjstat: "/usr/local/bin/pjstat" pjdel: "/usr/local/bin/pjdel"
2.3. history
履歴ページの必須表示項目は「Job ID」、「Application」、「Script Name」、「Status」です。それに対して、追加表示項目を設定します。本設定は省略可能です。
historyに何も設定しない場合、「Job Name」、「Partiton」、「Submission Time」が自動的に設定されます。下記のコードと同じです。OC_HISTORY_JOB_NAME、OC_HISTORY_PARTITION、OC_HISTORY_SUBMISSION_TIMEは特殊な変数であり、「Job Name」、「Partiton」、「Submission Time」をそれぞれ指します。
history: OC_HISTORY_JOB_NAME: OC_HISTORY_PARTITION: OC_HISTORY_SUBMISSION_TIME:
追加表示項目をなくしたい場合は、空配列を定義します。
history: []
ジョブスケジューラから得られるプロファイルの値を表示項目に設定することができます。「Job ID」をクリックすると表示される表の左の値をhistoryに設定します。また、labelを用いると、表示ラベルを設定できます。labelを用いない場合は、そのままの値が用いられます。
history:
OC_HISTORY_JOB_NAME:
Account:
AllocCPUS:
label: Allocated CPUs
3. Open OnDemandへの登録
3.1. 管理者による登録
Open Composerを/var/www/ood/apps/sys/に保存すると、Open OnDemandのホームページにOpen Composerのアイコンが表示されます。Open Composerのアイコンが表示されない場合は、Open OnDemand用の設定ファイル/var/www/ood/apps/sys/OpenComposer/manifest.ymlを確認してください。
Open Composer上のアプリケーションをOpen OnDemandのホームページに表示することもできます。例えば、/var/www/ood/apps/sys/OpenComposer/sample_apps/Slurmというアプリケーションを表示させたい場合は、同名のディレクトリをOpen OnDemandのアプリケーションディレクトリに作成します(# mkdir /var/www/ood/apps/sys/Slurm)。そして、そのディレクトリ内に下記のようなOpen OnDemand用の設定ファイルmanifest.ymlを作成します。
# /var/www/ood/apps/sys/Slurm/manifest.yml --- name: Slurm url: https://<your Open OnDemand URL>/pun/sys/OpenComposer/Slurm
3.2. 一般ユーザによる登録
一般ユーザ権限でOpen Composerをインストールすることもできます。ただし、事前に管理者権限でOpen OnDemandのApp Developmentの機能を有効化する必要があります。
ナビゲーションバーの「</> Develop」の「My Sandbox Apps (Development)」を選択します(Webブラウザのウィンドウサイズが小さい場合は、「</> Develop」ではなく「</>」と表示されます)。
「New App」をクリックします。
「Clone Existing App」をクリックします。
「Directory name」に任意の名前(ここではOpenComposer)、「Git remote」に「https://github.com/RIKEN-RCCS/OpenComposer.git」を記入し、「Submit」をクリックします。
「Launch Open Composer」をクリックします。
4. ジョブスケジューラの追加
ジョブスケジューラを追加したい場合、スーパークラスSchedulerが定義されたlib/scheduler.rbを参考にして、lib/schedulers/以下にジョブスケジューラのためのRubyスクリプトを作成してください。下記のPBS Pro(lib/schedulers/pbspro.rb)のようにSchedulerクラスを継承してください。ジョブを投入するsubmit()メソッド、ジョブをキャンセルするcancel()メソッド、ジョブの情報を問い合わせるquery()メソッドを定義する必要があります。
class Pbspro < Scheduler
また、いくつかのクラスタでは、ジョブスケジューラのコマンド(例:qstat)がラッパースクリプトになっていて、オリジナルのコマンドをユーザが実行できない場合があります。そのような場合、既存のスケジューラのスクリプトを少し変更することで対応できることがあります。例えば、lib/schedulers/miyabi.rbでは、下記のようにPBS Proのスケジューラを継承して新しいクラスMiyabiを定義しています。Miyabiクラスではquery()メソッドだけが定義されており、他のメソッドはlib/schedulers/pbspro.rbで定義されたものを利用しています。
class Miyabi < Pbspro
ジョブスケジューラのスクリプトの作成後、./conf.yml.erbで下記のようにスケジューラを指定します。
scheduler: miyabi