Hitachi

uCosminexus Grid Processing Server 使用の手引


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段階で判定されます。

  1. サブジョブの終了状態の判定

    サブジョブ実行プログラムの戻り値と,[グリッド実行定義]ダイアログボックスで指定した[警告しきい値][異常しきい値]を基に,該当するデータ識別子に対応する処理の成否(正常終了・警告終了・異常終了)が判定されます。判定された実行結果は,サブジョブの終了状態としてグリッドプロパティに格納されます。

  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) しきい値によるサブジョブの終了状態の判定

[グリッド実行定義]ダイアログボックスで指定する終了コードのしきい値によって,各サブジョブの終了コードが次の表に示すように変更されます。

表5‒3 終了コードのしきい値によるサブジョブの終了コードの設定

しきい値の種類

しきい値の意味

サブジョブの終了コードの設定

デフォルト値

終了コードしきい値:警告

グリッド実行ジョブの終了コードの警告終了値(20)に,個々のサブジョブの終了コードを変更するためのしきい値です。

サブジョブ実行プログラムの戻り値が0からこの値までの場合は正常終了(0)が設定されます。サブジョブ実行プログラムの戻り値がこの値を超えた場合は,警告終了(20)が設定されます。

ありません。

終了コードしきい値:異常

グリッド実行ジョブの終了コードの異常終了値(50)に,個々のサブジョブの終了コードを変更するためのしきい値です。

サブジョブ実行プログラムの戻り値が「警告終了しきい値」を超えた値からこの値までの場合は警告終了(20)が設定されます。サブジョブ実行プログラムの戻り値がこの値を超えた場合は,異常終了(50)が設定されます。

0

サブジョブ数しきい値:警告

警告終了(10または20)で終了させるサブジョブ数です。

警告終了したサブジョブ数がこの値を超えた場合,警告終了(10または20)のサブジョブだけであっても,グリッド実行ジョブの終了コードには30以上が設定されます。

0

サブジョブ数しきい値:異常

異常終了(50)で終了させるサブジョブ数です。

異常終了したサブジョブ数がこの値を超えた場合,異常終了(40または50)のサブジョブだけであっても,グリッド実行ジョブの終了コードには60以上が設定されます。

0

(b) グリッド実行ジョブの終了コードに設定される値

しきい値は,ジョブマネージャによって判定されます。つまり,ノードマネージャによって返されたUAPの戻り値を,しきい値に従ってジョブマネージャが変更します。なお,UAPの戻り値は,小さな値から大きな値になるに連れて重大なエラーになっていくものとして扱われます。

しきい値の組み合わせによるグリッド実行ジョブの終了コードの設定内容を次の表に示します。

表5‒4 しきい値の組み合わせによるグリッド実行ジョブの終了コードの設定

サブジョブ警告終了しきい値:wc

サブジョブ異常終了しきい値:ec

警告サブジョブ数しきい値:wj

異常サブジョブ数しきい値:ej

グリッド実行ジョブの終了コード

なし/あり

なし (0)

なし (0)/あり

なし (0)/あり

指定エラーです。

サブジョブ警告終了しきい値(ec)は必ず指定してください。

なし

あり

なし (0)/あり

なし (0)

  • 終了コードが0〜ecのサブジョブだけの場合は,グリッド実行ジョブの終了コードには0が設定されます。

  • 終了コードがecを超えたサブジョブが1つでもあると,グリッド実行ジョブの終了コードには50が設定されます。

  • すべてのサブジョブの終了コードがecを超えた場合は,グリッド実行ジョブの終了コードには60が設定されます。

なし

あり

なし (0)/あり

あり

  • 終了コードが0〜ecのサブジョブだけの場合は,グリッド実行ジョブの終了コードには0が設定されます。

  • 終了コードがecを超えたサブジョブ数が1〜ejの場合は,グリッド実行ジョブの終了コードには50が設定されます。

  • 終了コードがecを超えたサブジョブ数がejを超えると,グリッド実行ジョブの終了コードには60が設定されます。

あり

あり

なし (0)

なし (0)

  • 終了コードが0〜wcのサブジョブだけの場合は,グリッド実行ジョブの終了コードには0が設定されます。

  • 終了コードがwcを超えた値〜ecのサブジョブが1つでもあると,グリッド実行ジョブの終了コードには20が設定されます。

  • すべてのサブジョブの終了コードがwcを超えた値〜ecの場合は,グリッド実行ジョブの終了コードには30が設定されます。

  • 終了コードがecを超えたサブジョブが1つでもあると,グリッド実行ジョブの終了コードには50が設定されます。

  • すべてのサブジョブの終了コードがecを超えた場合は,グリッド実行ジョブの終了コードには60が設定されます。

あり

あり

なし (0)

あり

  • 終了コードが0〜wcのサブジョブだけの場合は,グリッド実行ジョブの終了コードには0が設定されます。

  • 終了コードがwcを超えた値〜ecのサブジョブが1つでもあると,グリッド実行ジョブの終了コードには20が設定されます。

  • すべてのサブジョブの終了コードがwcを超えた値〜ecの場合は,グリッド実行ジョブの終了コードには30が設定されます。

  • 終了コードがecを超えたサブジョブ数が1〜ejの場合は,グリッド実行ジョブの終了コードには50が設定されます。

  • 終了コードがecを超えたサブジョブ数がejを超えると,グリッド実行ジョブの終了コードには60が設定されます。

あり

あり

あり

なし (0)

  • 終了コードが0〜wcのサブジョブだけの場合は,グリッド実行ジョブの終了コードには0が設定されます。

  • 終了コードがwcを超えた値〜ecのサブジョブ数がwjまでの場合は,グリッド実行ジョブの終了コードには20が設定されます。

  • 終了コードがwcを超えた値〜ecのサブジョブ数がwjを超えると,グリッド実行ジョブの終了コードには30が設定されます。

  • 終了コードがecを超えたサブジョブ数が1つでもあると,グリッド実行ジョブの終了コードには50が設定されます。

  • すべてのサブジョブの終了コードがecを超えた場合は,グリッド実行ジョブの終了コードには60が設定されます。

あり

あり

あり

あり

  • 終了コードが0〜wcのサブジョブだけの場合は,グリッド実行ジョブの終了コードには0が設定されます。

  • 終了コードがwcを超えた値〜ecのサブジョブ数がwjまでの場合は,グリッド実行ジョブの終了コードには20が設定されます。

  • 終了コードがwcを超えた値〜ecのサブジョブ数がwjを超えると,グリッド実行ジョブの終了コードには30が設定されます。

  • 終了コードがecを超えたサブジョブ数が1〜ejの場合は,グリッド実行ジョブの終了コードには50が設定されます。

  • 終了コードがecを超えたサブジョブ数がejを超えると,グリッド実行ジョブの終了コードには60が設定されます。

(凡例) (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」は,この値よりも終了コードの値が大きいエラーがほかに発生しなかった場合の,グリッドジョブとしての終了コードです。

表5‒5 先行サブジョブの状態と今回実行したサブジョブの状態の関係

先行サブジョブの状態

今回実行したサブジョブの状態および終了コード

ノード障害など

しきい値異常

しきい値警告

しきい値正常

なし※1

NOEXEC

  • 終了コード='-'

  • GridRC=119※4

ERROR

  • 終了コード=xx

  • GridRC=50〜60

WARNING

  • 終了コード=yy

  • GridRC=20〜30

NORMAL

  • 終了コード=0

  • GridRC=0

  • NOEXEC※2

  • UNKNOWN

NOEXEC

  • 終了コード='-'

  • GridRC=40

ERROR※2

SKIP

  • 終了コード='-'

  • GridRC=40

SKIP

CANCEL

WARNING※3

ERROR

  • 終了コード=xx

  • GridRC=50〜60

WARNING

  • 終了コード=yy

  • GridRC=20〜30

WARNING

  • 終了コード=0

  • GridRC=10

NORMAL※1

ERROR

  • 終了コード=xx

  • GridRC=50〜60

WARNING

  • 終了コード=yy

  • GridRC=20〜30

NORMAL

  • 終了コード=0

  • GridRC=0

  • HOLD

  • SKIP_H

SKIP_H

  • 終了コード='-'

  • GridRC=10

注※1

先行するサブジョブの状態がない場合およびNORMALの場合,今回実行したサブジョブの状態と終了コードは同じになります。

注※2

先行するサブジョブの状態がNOEXEC,UNKNOWN,およびERRORの場合,今回実行したサブジョブの状態は異なりますが,終了コードは同じになります。

注※3

先行するサブジョブの状態がWARNINGの場合,今回実行したサブジョブが正常終了してもWARNINGになります。この点が,先行するサブジョブの状態がない場合およびNORMALの場合との相違点です。

注※4

使用できる実行ノードによって次のようになります。

 実行ノードがない場合:GridRC=119

 実行ノードがある場合:GridRC=50〜60