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 ※異常終了時の遷移先
下図のように、一覧に "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]が、書き換えられてしまうので注意が必要です。