[CentOS6][SOS JobScheduler] Host-A、Host-B で複数ジョブ(JobChain)の計画実行(即時)


Create: 2013/02/21
LastUpdate: 2013/03/27
[ メニューに戻る ]

下図の環境で、依存関係のある複数のジョブをHost-A、Host-Bで順番に実行してみます。
環境の詳細を知りたい場合は、メニューに戻って構築手順を参照してください。


依存関係のあるジョブを順番に実行するには、JobChain にジョブを組み込んで、実行順序を制御します。
JobChainに組み込むジョブは、OrderJob と呼ばれます。
ここでは、下図のようにジョブが順番に実行されるように OrderJob と JobChain を定義して計画実行(即時)します。
JOEを使用して OrderJobとJobChainの定義を行い、JOCを使用して、JobChainの計画実行(即時)と結果の確認を行います。
JOEの環境(ホットフォルダなど)は、「 [CentOS6][SOS JobScheduler] Host-Aで単独ジョブを即時実行する」で作成したものを流用します。



手順については、「JobScheduler QuickStart (PDF)」を参考にしました。

1.ジョブの定義


"job1" と "job3" という名前の OrderJob を2つ定義します。
"job1"は、「 [CentOS6][SOS JobScheduler] Host-Aで単独ジョブを即時実行する」 で定義したStandaloneJobをOrderJobに変更し、Host-Aで実行するものとします。
"job3"は、新たに定義する OrderJob で、Host-Bで実行するものとします。
操作端末で VNC Viewer を起動し、jobsユーザで Manager に接続します。
Manager で以下のコマンドを実行して、JOE を起動します。
~/sos-berlin.com/jobscheduler/scheduler/scheduler_home/bin/jobeditor.sh
  または
/opt/sos-berlin.com/jobscheduler/scheduler/bin/jobeditor.sh
まず、"job1"の定義を変更します。
左側のメニューで、[Jobs]→[job1]をクリックし、[Options]タブを開くと、下図の画面が表示されます。
[Job Chain Job] で "yes" を選択すると、OrderJob になります。


[Script] タブを開くと、下図の画面が表示されるので、結果確認用に、スクリプトを修正します。
赤枠の行で、$SCHEDULER_ORDER_ID を表示するように修正します。
変更が終了したら、[フロッピーアイコン]をクリックして保存します。


次に、"job2" を OrderJob として新規作成します。
左側のメニューで [Jobs]をクリックし、開いた画面で[New Order Job]ボタンをクリックすると下図のように新しい "job2" が作成されます。
[job2]をクリックします。


下図の画面が表示されたら、[Job Name] に "job3" を入力し、[Proccess Class] に "Host-B"を入力、[Script] タブは、"job1" と同じ内容を入力します。
"Host-B" を定義する手順については、「 [CentOS6][SOS JobScheduler] Host-Aで単独ジョブを即時実行する」 を参照してください。
入力が終了したら、[フロッピーアイコン]をクリックして、保存します。


以上で、OrderJob が2つできました。

2.JobChain の定義


JobChain では、State(=状態) を1個づつ定義していき、各Stateで、どのジョブを実行するか指定します。
例えば、以下の例では、正常時用に、3つの State を作成し、State(step1) と State(step2) でジョブを実行します。
  State(step1) → State(step2) → State(success)  ※カッコ内はStateの名称
まずは、新しいJobChainを作成し、それから、上記で作成したジョブを組み込んでいきます。
左側のメニューで、[Job Chain]をクリックし、開いた画面で、[New Job Chain]ボタンをクリックします。
下図のように、新しい "job_chain1" が作成されたら、左側のメニューでクリックします。


下図の画面が開いたら、[New Chain Node] ボタンをクリックします。


1番目の State を以下のように定義します。
  • [State] ・・・ step1     ※ State の名称
  • [Job] ・・・ job1       ※ 実行するジョブ
  • [Next State] ・・・ step2  ※正常終了時の遷移先
  • [Error State] ・・・ error  ※異常終了時の遷移先
下図のように、[State]、[Job]、[Next State]、[Error State]を入力して、[Apply Chain Node] ボタンをクリックすると、"job1" が追加されます。


下図のように、一覧に "job1" が追加されたら、[New Chain Node] をクリックして、"job3" を追加します。
2番目の State を以下のように定義します。
  • [State] ・・・ step2      ※ State の名称
  • [Job] ・・・ job3        ※ 実行するジョブ
  • [Next State] ・・・ success  ※正常終了時の遷移先
  • [Error State] ・・・ error   ※異常終了時の遷移先



一覧の黄色で表示されている "success" と "error" は、未定義の State です。
"step2" をクリックして、[Add Missing Nodes] ボタンをクリックすると、自動的に、この2つを作成してくれます。


下図のように、"success" と "error" が作成されます。この2つには、Endnode と表示されていますが、これは、このStateが、このJobChain の最後の State であることを意味しており、何もジョブは実行しません。State が変わるだけです。
[フロッピーアイコン]をクリックして保存します。


以上で、JonChainの定義は終了です。
JobChain は、定義した State を順番に処理していきます。
JobChain のState全体の流れは、ここで定義しましたが、実行時には、単純に全部のStateを順番に実行するだけでなく、「どこの State から開始するか」、とか、「どこの State まで実行するか」など柔軟な指定ができます。

3.JobChain の計画実行(即時)と実行結果確認


操作端末でブラウザを起動して、以下のURLにアクセスしてJOCを開きます。
  http://<Manager>:4444/
JOCが表示されたら、[Job Chains]タブを開き、[test]→[job_cjain1]をクリックします。
下図のように、右側に [JOB CHAIN] が表示されます。


[Job Chain Meni] ボタンをクリックして、メニューから、[Add order] を選択します。


下図のポップアップが表示されるので、[Select an oredr state] で "step1" を選択して、[submit]ボタンをクリックします。


自動的に Order が作成され実行されます。
実行中は、下図のように表示されます。
[Show order history] をクリックして、Order の実行履歴を参照します。

一番上が、Order の最新の実行結果です。
[State] 欄が "success" なら正常終了しています。
[Show log] ボタンをクリックして、実行結果を参照します。


下図のように、2つのジョブの実行結果が表示され、JobChain 全体の実行結果を見ることができます。




■ 補足1

JOCの[Job Chain Menu] で、"Show Dependency" を実行すると、下図のように依存関係を図で見ることができます。



■ 補足2

JOEでのJobChain の定義で、一覧での表示順を変えたいだけの場合は、動かしたい State をクリックして、矢印アイコンで上下できます。
ただし、[Reorder]のチェックを外さないと、[Next State]が、書き換えられてしまうので注意が必要です。