2.4.1 グリッドプロパティによる情報の引き継ぎ
グリッドジョブネットの起点はグリッド開始ジョブです。グリッド開始ジョブからグリッドジョブ前処理プログラムを呼び出して,データ配置情報をグリッドプロパティに格納します。以降,データ配置情報に従って分割された各データに対してグリッドジョブによる実行結果が付与され,後続グリッドジョブに対して先行グリッドジョブの情報が引き継がれていきます。グリッドプロパティは,先行グリッドジョブから後続グリッドジョブへ情報を引き継ぐための管理情報です。グリッドプロパティは,グリッド終了ジョブで解放されるまで,グリッドジョブ間での情報の引き継ぎのために使用されます。
(1) グリッドプロパティが管理する情報
グリッドプロパティには,次に示す情報が格納されます。
-
データ識別子
-
データ識別情報
-
データ配置情報
-
グリッドジョブの動作情報
グリッドプロパティは,グリッド開始ジョブで生成されてグリッド終了ジョブで解放されます。グリッドプロパティはグリッドプロパティ名で識別されるため,グリッドジョブネットを構成するグリッド開始ジョブ,グリッド実行ジョブおよびグリッド終了ジョブに対して,同一のグリッドプロパティ名を定義します。これによって,データ配置情報や先行されたサブジョブの終了コード情報などが,グリッドジョブネット内で引き継がれていきます。
グリッドプロパティはメモリとファイル上に存在し,データマネージャの再起動時にはファイルからデータを引き継ぎます。
グリッドプロパティが管理する情報は次のとおりです。
(a) データ識別子
データにアクセスできる実行ノードにサブジョブを投入するためには,どのデータがどの実行ノードに存在するのかに基づいて,サブジョブをスケジュールする必要があります。このため,グリッドジョブ前処理プログラムで,データ群(一定数のレコードまたは1つのファイルごと)にデータ識別子を定義します。データ識別子には,通し番号を含めるなどして,グリッドプロパティ内でユニークな名称としてください。
データ識別子は,サブジョブを実行するときにUGPSM_DATAID環境変数に設定します。サブジョブとして起動するUAPはこの環境変数を参照して,どのデータ群を処理するかを判断します。
(b) データ識別情報
サブジョブ実行時に,ユニークな情報を基にサブジョブの動作を変えたい場合に使用する情報を指定できます。データ識別情報は,サブジョブを実行するときにUGPSM_DATAINFO環境変数およびUGPSM_DATAINFO02環境変数〜UGPSM_DATAINFO32環境変数に設定します。サブジョブとして起動するUAPはこの環境変数を参照して,サブジョブに動作をカスタマイズできます。
(c) データ配置情報
バッチジョブ分散実行システムは,データ識別子に対応するサブジョブを,データ配置情報に指定された実行ノードで実行します。
データ配置情報は,データ識別子とデータを参照・更新する実行ノードとを対応づける情報です。データマネージャは,グリッド開始ジョブから起動されるグリッドジョブ前処理プログラムの出力結果としてデータ配置情報を取得して,グリッドプロパティとして管理します。
(d) グリッドジョブの動作情報
グリッドジョブの動作情報として,次に示すような情報がグリッドプロパティに格納されます。
-
データ識別子に対応するサブジョブの実行状況(未実行・実行中・実行済みなど)
-
サブジョブの実行結果(終了コードなど)
また,グリッド実行ジョブで,先行グリッドジョブの実行結果を引き継ぐように定義すると,グリッドプロパティ内の情報が先行グリッドジョブ情報として扱われます。
(2) 分割データの作成と削除
グリッドジョブの実行前後には,各サブジョブの処理対象となる分割データを作成したり削除したりする処理が必要です。分割データの形式は,サブジョブ実行プログラム(UAP)に依存します。そのため,グリッドジョブ前処理プログラムとグリッドジョブ後処理プログラムとして,分割データの作成と削除の処理をユーザ側で用意する必要があります。
グリッドジョブ前処理プログラムとグリッドジョブ後処理プログラムに作り込む処理は次のとおりです。
プログラム |
処理内容 |
要否 |
---|---|---|
グリッドジョブ前処理プログラム (グリッド開始ジョブ) |
データ配置情報の標準出力への出力※ |
必要 |
データの分割 |
任意 |
|
分割データの実行ノードへの転送 |
任意 |
|
グリッドジョブ後処理プログラム (グリッド終了ジョブ) |
分割データの統合 |
任意 |
グリッドジョブ前処理プログラムは,[グリッド開始定義]ダイアログボックスまたは[単体グリッドジョブ定義]ダイアログボックスで指定します。この指定は省略できません。指定がない場合は,グリッド開始ジョブはエラーとなります。なお,単体グリッドジョブの場合は,グリッドジョブ前処理プログラムが出力する標準出力を事前にファイル化して,静的な配置情報としてデータ配置情報ファイルを指定できます。[単体グリッドジョブ定義]ダイアログボックスでデータ配置情報ファイルを指定するオプションを有効にすることで,グリッドジョブ前処理プログラムの指定を省略できます。データ配置情報ファイルを指定するオプションを有効にした場合にデータ配置情報ファイルを省略したときは,設定ファイルのDATAPLACEFILE_DIRパラメータで指定されたディレクトリ上のデフォルトのファイル(dataplace)が設定されます。
グリッドジョブ後処理プログラムは,[グリッド終了定義]ダイアログボックスまたは[単体グリッドジョブ定義]ダイアログボックスで,必要に応じて指定します。後処理が不要な場合は,指定を省略できます。なお,グリッドジョブ後処理プログラムを呼び出さない場合でも,グリッド終了ジョブでは,グリッドプロパティの解放を行います。
また,グリッドジョブ前処理プログラムとグリッドジョブ後処理プログラムは,ジョブマネージャから呼び出されます。したがって,各プログラムがジョブマネージャの起動ホスト(グリッドジョブ管理ホスト)で実行されることを意識して,データ分割処理を設計する必要があります。
(3) グリッドジョブ前処理プログラムがデータ配置情報を正しく出力しなかった場合の動作
データ配置情報は,グリッドジョブ前処理プログラムが実行されたホスト上で取得されます。
グリッド開始ジョブの実行によってデータ配置情報が出力されない,または有効なデータではない場合は,グリッド開始ジョブは,終了コード114〜117で異常終了します。JP1/AJS3 - Viewでのグリッドジョブネットの定義では,グリッド開始ジョブが終了コード114〜117で終了した場合に,後続のグリッド実行ジョブを起動しないように定義する必要があります。また,グリッド実行ジョブやグリッド終了ジョブの定義で,指定されたグリッドプロパティ名に対応するグリッドプロパティが登録されていない場合は,終了コード88で異常終了します。