5.2.3 グリッド実行ジョブの定義
グリッド実行ジョブは,各実行ノードで実行するジョブ(サブジョブ)の集合です。
- 〈この項の構成〉
(1) グリッド実行ジョブの処理
グリッド実行ジョブの実行前に,サブジョブ実行プログラム(UAPおよびスクリプト)を各実行ノード上に配置しておく必要があります。グリッド実行ジョブを実行すると,サブジョブ実行プログラムが呼び出されて,UGPSM_DATAID環境変数にデータ識別子が設定されます。また,サブジョブ実行プログラム側で,必要に応じてデータ識別子を基に入出力ファイル名を変更できます。
- 入力情報
-
引数として入力情報を指定して,サブジョブ実行プログラムに渡すこともできます。
また,次の環境変数が設定されます。
・UGPSM_DATAID環境変数(データ識別子)
・UGPSM_DATAINFO環境変数(データ識別情報)
・UGPSM_GEN環境変数(世代識別子)
・UGPSM_RESOURCENAME環境変数(リソース名)
・UGPSM_SCHEDULEPRIORITY環境変数(スケジュール優先順位)
・ビューホストで定義する環境変数
・UGPSM_DATAINFO02〜UGPSM_DATAINFO32環境変数(データ識別情報(拡張情報))
- 出力情報
-
サブジョブ実行プログラムが標準エラー出力に出力した情報は,JP1/AJS3 - Viewから確認できます。
- 終了コード
-
グリッド実行ジョブとして複数のサブジョブが実行されるため,グリッド実行ジョブの終了結果は,次のように2段階で判定されます。
-
サブジョブの終了状態の判定
サブジョブ実行プログラムの戻り値と,[グリッド実行定義]ダイアログボックスで指定した[警告しきい値][異常しきい値]を基に,該当するデータ識別子に対応する処理の成否(正常終了・警告終了・異常終了)が判定されます。判定された実行結果は,サブジョブの終了状態としてグリッドプロパティに格納されます。
-
グリッド実行ジョブとしての終了コードの設定
すべてのサブジョブの実行が終了した時点で,データ識別子(サブジョブ)に対応する実行結果を基に,グリッド実行ジョブの終了コードが決定されます。警告終了と異常終了については,[グリッド実行定義]ダイアログボックスで指定した[サブジョブ数しきい値]と,データ識別子に対応する実行結果が比較されて,終了コードが変更されます。
終了コードのしきい値の指定と実行結果の関係については,「(4) 終了コードのしきい値を使用したグリッド実行ジョブの制御」を参照してください。終了コードの値と意味については,「9.5.3 グリッド実行ジョブの終了コード」を参照してください。
-
(2) グリッド実行ジョブの実行前の準備
-
サブジョブ実行プログラムは,実行ノードを起動するノードに配置してください。
-
サブジョブ実行プログラムは,ノードマネージャデーモンを起動したアカウントの権限,またはグリッド実行ジョブを実行したユーザの権限で実行されます。そのため,プログラム,スクリプトおよび入出力するファイルに,適切なパーミッションを設定してください。
-
グリッド実行ジョブは,グリッド開始ジョブを実行したあとで動作するように定義してください。
(3) グリッド実行ジョブの定義のポイント
グリッド実行ジョブの定義で,次に示す項目を指定する際のポイントを説明します。
-
先行グリッドジョブ実行結果
-
スクリプトファイル名
-
環境変数
グリッド実行ジョブの定義で指定する終了コードのしきい値については,「(4) 終了コードのしきい値を使用したグリッド実行ジョブの制御」を参照してください。
(a) 先行グリッドジョブ実行結果
同一のグリッドプロパティ名を指定した先行グリッドジョブの,サブジョブの終了状態を参照するかどうかを指定します。サブジョブの終了状態については,「9.5 終了コード」を参照してください。
なお,JP1/AJS3の[ジョブネットエディタ]ウィンドウでの関連線接続ボタンでの定義と,[グリッド実行定義]ダイアログボックスでの先行グリッド実行定義は,関連を持たないため,注意が必要です。
(b) スクリプトファイル名
分割後のデータを処理する実行ノード上の,スクリプトファイル名を指定します。なお,スクリプトファイルは,ジョブを実行するすべての実行ノードで同じパス名になるように配置しておく必要があります。
- BJEXを使用する場合
-
BJEXを使用するために,次のように指定します。
- LinuxまたはAIXの場合
/opt/hitachi/bjex/bin/bjexec ジョブ定義XMLファイルのパス名
- Windowsの場合
<BJEXのインストール先ディレクトリ>\bin\bjexecジョブ定義XMLファイルのパス名
ジョブ定義XMLファイルではサブジョブで使用するデータを識別可能とするため,BJEXの「XMLファイルへの環境変数指定機能」を使用します。この機能を使用すれば,ジョブ定義XMLファイル中に"%{"と"}"で囲んだ環境変数名を,その環境変数に設定されている値に置換できます。「XMLファイルへの環境変数指定機能」の詳細については,マニュアル「uCosminexus Batch Job Execution Server 使用の手引」または「uCosminexus Batch Job Execution Server 使用の手引(Windows(R)用)」を参照してください。
ジョブ定義XMLファイルの定義例を次に示します。
<?xml version="1.0" encoding="Shift-JIS" ?> <HitachiBatchJobExec version="1.3" os="unix" > <JOB NAME="SAMPLEJOB"> <STEP NAME="STEP01"> <EXEC PGM="COBOL_UAP" LANG="COBOL" /> <DD NAME="SYSUT1" DSN="/GRID/FILE%{UGPSM_DATAID}" DISP="OLD" /> </STEP> </JOB> </HitachiBatchJobExec>
- JP1/ASを使用する場合
-
JP1/ASを使用するために,次のように指定します。
- Linuxの場合
/opt/jp1as/bin/adshexec ジョブ定義スクリプトファイルのパス名
- Windowsの場合
<JP1/ASのインストール先ディレクトリ>\bin\adshexec ジョブ定義スクリプトファイルのパス名
環境変数名として,データ配置情報で指定したデータ識別子を示すUGPSM_DATAID環境変数を使用することで,サブジョブが識別可能になります。
また,付加情報として,データ配置情報で設定したデータ識別情報を示すUGPSM_DATAINFO環境変数や,世代実行されたジョブを識別する世代識別子を示すUGPSM_GEN環境変数を使用することもできます。
LinuxまたはAIXで,ジョブを強制終了した場合,サブジョブとして実行しているプロセスはSIGTERMシグナルで停止します。CANCEL_WAIT_TIMEパラメータで指定した監視時間を経過しても停止しない場合は,SIGKILLシグナルで停止します。
(c) 環境変数
スクリプト(サブジョブ実行プログラム)に渡す環境変数を指定します。
環境変数の指定方法については,「7. 画面」の「[グリッド実行定義]ダイアログボックス」の「環境変数の指定方法」を参照してください。
(4) 終了コードのしきい値を使用したグリッド実行ジョブの制御
グリッド実行ジョブは,先行するサブジョブの実行状況や終了状態に基づいて制御されます。サブジョブの終了状態(正常終了・警告終了・異常終了)は,グリッド実行ジョブを定義するときに指定する終了コードのしきい値によって判定されます。
(a) しきい値によるサブジョブの終了状態の判定
[グリッド実行定義]ダイアログボックスで指定する終了コードのしきい値によって,各サブジョブの終了コードが次の表に示すように変更されます。
しきい値の種類 |
しきい値の意味 |
サブジョブの終了コードの設定 |
デフォルト値 |
---|---|---|---|
終了コードしきい値:警告 |
グリッド実行ジョブの終了コードの警告終了値(20)に,個々のサブジョブの終了コードを変更するためのしきい値です。 |
サブジョブ実行プログラムの戻り値が0からこの値までの場合は正常終了(0)が設定されます。サブジョブ実行プログラムの戻り値がこの値を超えた場合は,警告終了(20)が設定されます。 |
ありません。 |
終了コードしきい値:異常 |
グリッド実行ジョブの終了コードの異常終了値(50)に,個々のサブジョブの終了コードを変更するためのしきい値です。 |
サブジョブ実行プログラムの戻り値が「警告終了しきい値」を超えた値からこの値までの場合は警告終了(20)が設定されます。サブジョブ実行プログラムの戻り値がこの値を超えた場合は,異常終了(50)が設定されます。 |
0 |
サブジョブ数しきい値:警告 |
警告終了(10または20)で終了させるサブジョブ数です。 |
警告終了したサブジョブ数がこの値を超えた場合,警告終了(10または20)のサブジョブだけであっても,グリッド実行ジョブの終了コードには30以上が設定されます。 |
0 |
サブジョブ数しきい値:異常 |
異常終了(50)で終了させるサブジョブ数です。 |
異常終了したサブジョブ数がこの値を超えた場合,異常終了(40または50)のサブジョブだけであっても,グリッド実行ジョブの終了コードには60以上が設定されます。 |
0 |
(b) グリッド実行ジョブの終了コードに設定される値
しきい値は,ジョブマネージャによって判定されます。つまり,ノードマネージャによって返されたUAPの戻り値を,しきい値に従ってジョブマネージャが変更します。なお,UAPの戻り値は,小さな値から大きな値になるに連れて重大なエラーになっていくものとして扱われます。
しきい値の組み合わせによるグリッド実行ジョブの終了コードの設定内容を次の表に示します。
サブジョブ警告終了しきい値:wc |
サブジョブ異常終了しきい値:ec |
警告サブジョブ数しきい値:wj |
異常サブジョブ数しきい値:ej |
グリッド実行ジョブの終了コード |
---|---|---|---|---|
なし/あり |
なし (0) |
なし (0)/あり |
なし (0)/あり |
指定エラーです。 サブジョブ警告終了しきい値(ec)は必ず指定してください。 |
なし |
あり |
なし (0)/あり |
なし (0) |
|
なし |
あり |
なし (0)/あり |
あり |
|
あり |
あり |
なし (0) |
なし (0) |
|
あり |
あり |
なし (0) |
あり |
|
あり |
あり |
あり |
なし (0) |
|
あり |
あり |
あり |
あり |
|
(c) サブジョブの実行状況および終了状態
サブジョブの実行状況と終了状態を次に示します。
-
NORMAL
サブジョブは正常終了しました。先行するサブジョブもすべて正常終了している状態です。
正常終了とは,終了コードが「警告しきい値」以下の値で終了したことを示します。
-
WARNING
サブジョブは警告終了しました。または,同一サブジョブ識別子の先行サブジョブの中に警告終了したものがあります。
警告終了とは,終了コードが「警告しきい値」を超えた値から「異常しきい値」以下で終了したことを示します。
今回実行したサブジョブが正常終了したかどうかは,終了コードで判断できます。先行するサブジョブが警告終了した場合,後続するサブジョブは正常終了してもWARNING状態となります。
-
ERROR
サブジョブは異常終了しました。
異常終了とは,終了コードが「異常しきい値」を超えた値で終了したことを示します。
今回実行したサブジョブが異常終了した場合,終了コードに値が設定されています。先行サブジョブが異常終了した場合は,今回サブジョブは実行されていません。
-
SKIP
同一サブジョブ識別子の先行サブジョブの中に異常終了または強制終了したものがあります。
自サブジョブは,実行されていません。この場合,今回の終了コードは[サブジョブ一覧表示]ウィンドウでは空白表示,JP1/AJS3 - Viewの[実行結果詳細]ダイアログボックスおよびgpjoblsコマンドでは「−」となります。
-
NOEXEC
ノード障害や通信障害などによって,サブジョブが実行されていないか,サブジョブ実行中にノードマネージャで障害が発生したため,サブジョブの実行終了を判断できていません。サブジョブがNOEXEC状態となった場合は,後続のサブジョブもNOEXEC状態となります。この場合,今回の終了コードは[サブジョブ一覧表示]ウィンドウでは空白表示,JP1/AJS3 - Viewの[実行結果詳細]ダイアログボックスおよびgpjoblsコマンドでは「−」となります。
-
READY
サブジョブは,実行待ちの状態です。
-
RUNNING
サブジョブは,実行状態です。
-
CANCEL
サブジョブは,実行中,または実行前に強制終了されました。
実行中に強制終了された場合の終了コードを次に示します。
-
LinuxまたはAIXの場合
143または137
-
Windowsの場合
BJEXを使用したとき:10090
JP1/ASを使用したとき:137
実行前に強制終了された場合,終了コードは[サブジョブ一覧表示]ウィンドウでは空白表示,JP1/AJS3 - Viewの[実行結果詳細]ダイアログボックスおよびgpjoblsコマンドでは「−」となります。グリッドジョブとしての終了コードは-1となります。
-
-
UNKNOWN
グリッドジョブ管理ホストまたはグリッドプロパティ管理ホストで障害が発生したため,ジョブマネージャ回復コマンドまたはデータマネージャ回復コマンドを実行しましたが,サブジョブが実行されたかどうかを判断できない状態です。
サブジョブがUNKNOWN状態となった場合は,後続のサブジョブはNOEXEC状態となります。この場合,今回の終了コードは[サブジョブ一覧表示]ウィンドウでは空白表示,JP1/AJS3 - Viewの[実行結果詳細]ダイアログボックスおよびgpjoblsコマンドでは「−」となります。
-
HOLD
サブジョブは保留状態です。保留状態とは,グリッド実行ジョブの定義時に保留設定をしたサブジョブで,未実行であるサブジョブの状態のことです。この場合,今回の終了コードは[サブジョブ一覧表示]ウィンドウでは空白表示,JP1/AJS3 - Viewの[実行結果詳細]ダイアログボックスおよびgpjoblsコマンドでは「−」となります。
-
SKIP_H
同一サブジョブIDの先行サブジョブの中に,実行を保留したものがあります。自サブジョブについては実行していません。この場合,今回の終了コードは[サブジョブ一覧表示]ウィンドウでは空白表示,JP1/AJS3 - Viewの[実行結果詳細]ダイアログボックスおよびgpjoblsコマンドでは「−」となります。
グリッドジョブ実行中のサブジョブの終了状態の反映は非同期に行われます。このため,実行中のジョブの状態をgpjoblsコマンドで表示した場合,サブジョブが終了していても,状態がRUNNINGと表示されることがあります。また,NOEXECやSKIPはグリッドジョブの終了時に設定されます。
(d) 先行サブジョブと今回のサブジョブの関係
先行するサブジョブの状態と今回実行したサブジョブの状態の関係を次の表に示します。表中の「終了コード」は,今回実行したサブジョブの終了コードです。「GridRC」は,この値よりも終了コードの値が大きいエラーがほかに発生しなかった場合の,グリッドジョブとしての終了コードです。
先行サブジョブの状態 |
今回実行したサブジョブの状態および終了コード |
|||
---|---|---|---|---|
ノード障害など |
しきい値異常 |
しきい値警告 |
しきい値正常 |
|
なし※1 |
NOEXEC
|
ERROR
|
WARNING
|
NORMAL
|
|
NOEXEC
|
|||
ERROR※2 |
SKIP
|
|||
SKIP |
||||
CANCEL |
||||
WARNING※3 |
ERROR
|
WARNING
|
WARNING
|
|
NORMAL※1 |
ERROR
|
WARNING
|
NORMAL
|
|
|
SKIP_H
|