付録A.4 グリッドジョブ終了処理のカスタマイズ
デフォルトのスクリプトファイル(グリッドジョブ後処理プログラム)を,GUIを使ってカスタマイズします。
(1) データのマージ処理の仕組み
SORT EEコマンドを使って出力ファイルをマージできます。デフォルトのスクリプトを実行した場合のマージ処理の概要を次の図に示します。
図に従い,マージ処理の内容を説明します。
- GUIで設定した自動分散の定義
-
マージ処理の有無:有
出力ファイル名:/tmp/output/outdata
設定ファイル(ugpsm.conf)のDISTRIBUTE_DIRパラメータで指定した分割ファイルの格納先に,サブジョブ(UAP)ごとに分割ファイルが出力されています。
SORT EEコマンドが分割ファイルをマージして,GUIで指定したファイル名で出力されます。
SORT EEコマンドが正常終了すると,分割ファイル格納ディレクトリは削除されます。出力ファイルの格納ディレクトリが存在しない場合,またはグリッドジョブの実行ユーザに出力ファイルの更新権限がない場合は,SORT EEコマンドはエラーとなります。このとき,SORT EEコマンドの終了コードとスクリプトファイルの終了コードは同じとなります。エラー終了した場合の原因は,一時エラーメッセージファイルまたはSORT EEコマンドのログファイルで確認できます。
なお,分割ファイル格納ディレクトリの削除は必須のため,マージ処理を「無」に設定していた場合でも,スクリプトファイルは必ず実行されます。マージ処理の設定の有無は,${UGPSM_AUTOMRG}環境変数の値で判断されます。
マージ処理で使用するSORT EEコマンドのパラメータおよびSORT EEの環境変数を,それぞれ次の表に示します。
コマンド名 |
パラメータ |
オペランド |
指定値 |
説明 |
---|---|---|---|---|
exsort64 |
-function |
− |
copy |
コピー処理を使用します。 |
-catinp |
fileorg |
C |
サブジョブ単位に出力されたUAPの出力ファイルのファイル編成として,CSVファイルを使用します。テキストファイルも使用できます。 |
|
prefix |
${UGPSM_DDIR}/${UGPSM_GRIDPROPID}/OUT/${UGPSM_GRIDPROPID} |
サブジョブ単位に出力されたUAPの出力ファイル名を指定します。DISTRIBUTE_DIRパラメータで指定したパス名に,「/${UGPSM_GRIDPROPID}/OUT/${UGPSM_GRIDPROPID}」を追加した値を設定します。 |
||
-catout |
fileorg |
C |
出力ファイルのファイル編成として,CSVファイルを使用します。テキストファイルも使用できます。 |
|
file |
${UGPSM_DIVOUT} |
出力ファイル名を指定します。uGPS - Viewの[自動分散定義]ダイアログボックスで指定した出力ファイル名を設定します。 |
環境変数名 |
対応するコマンドのパラメータ |
説明 |
対応 |
---|---|---|---|
EXSORT64MSGOPT |
− |
コマンド実行時のメッセージ抑止オプションを指定します。 |
「8」を設定します。 |
EXSORT64MGTOPT |
-cmdopt NOLOCK |
チェック機能の緩和に関するオプションを指定します。 SORT,SORT EE,COBOL,ISAMプログラムの処理間での,入出力ファイルのオープンモードを指定できます(NOLOCK/EXC)。 |
無効化します。 |
EXSORT64SUPPRESSCATMSG |
− |
ファイルのマージ処理が終了したときに,KBLS1011-Iメッセージの出力を抑止します。 |
「YES」を設定します。 |
EXSORT64CATINPNOERR |
− |
-catinpパラメータのfileオペランドで指定した入力ファイルの一部が存在しない場合でも,マージ処理を続行します。 |
「YES」を指定します。 |
(2) 分割ファイル格納ディレクトリの削除
グリッド開始処理で作成したグリッドプロパティ識別子ごとの分割ファイルを格納するディレクトリは,gpdivdirrmコマンドで削除します。
グリッドジョブ後処理プログラムで,グリッドプロパティ識別子を指定してgpdivdirrmコマンドを実行すると,分割ファイル格納ディレクトリが削除されます。また,グリッドジョブ前処理プログラムでも,スクリプト内のコマンドでエラーを検知した場合の後処理として,gpdivdirrmコマンドを実行できます。gpdivdirrmコマンドについては,8章の「gpdivdirrm(分割ファイル格納ディレクトリ削除コマンド)」を参照してください。
(3) デフォルトのスクリプト(グリッドジョブ後処理プログラム)
グリッドジョブ後処理プログラムは,JP1/ASを使用して実行します。uGPS - Managerでは,GUIで指定したマージ処理の設定内容を${UGPSM_MRGUAP}環境変数で受け取り,ジョブマネージャデーモンまで渡します。この${UGPSM_MRGUAP}環境変数を使ってグリッドジョブを実行するため,次のジョブ定義スクリプトファイル(gpautoge.ash)を提供します。このスクリプトはJP1/ASが作成する一時ファイルを使用します。そのため,JP1/AS以外の/bin/shなどでは動作しません。また,uGPS - ManagerがWindows環境の場合は,PATH環境変数にSORT EEやJP1/ASのパス名を登録しておく必要があります。
-
uGPS - ManagerがLinuxまたはAIX環境の場合
#-adsh_job gpautoge
export PATH=/opt/HIEXSORT64/bin:/opt/jp1as/bin:/opt/jp1as/cmd:/opt/hitachi/ugpsm/bin:${PATH}
#-adsh_step_start GPAUTOGE
#-adsh_file_temp TEMPASH -chk create -normal del
echo "${UGPSM_MRGUAP}" > ${TEMPASH}
adshexec -s PARENT ${TEMPASH}
#-adsh_step_end
-
uGPS - ManagerがWindows環境の場合
#-adsh_job gpautoge
#-adsh_step_start GPAUTOGE
#-adsh_file_temp TEMPASH -chk create -normal del
echo "${UGPSM_MRGUAP}" > ${TEMPASH}
adshexec -s PARENT ${TEMPASH}
#-adsh_step_end
uGPS - Viewが提供するデフォルトのグリッドジョブ後処理プログラムのメイン処理を次に示します。処理内の(n)は行番号を意味します。
-
uGPS - ManagerがLinuxまたはAIX環境の場合
************************************************************************ (1)#-adsh_job gpfilecat (2)#-adsh_rc_ignore unset (3)export EXSORT64MSGOPT=8 (4)export EXSORT64SUPPRESSCATMSG=YES (5)export EXSORT64CATINPNOERR=YES (6)unset EXSORT64MGTOPT (7) (8)#-adsh_file STDERR {UGPSM_SDIR}/{UGPSM_GRIDPROPID}_1 -normal del -abnormal keep (9)#-adsh_file CMDERR {UGPSM_SDIR}/{UGPSM_GRIDPROPID}_2 -normal del -abnormal keep (10) (11)#-adsh_step_start GPFILECAT (12)## ファイルのマージ (13) if [ "${UGPSM_AUTOMRG}" = 1 ] ; then (14) exsort64 \ (15) -function copy \ (16) -catinp fileorg=C prefix=${UGPSM_DDIR}/${UGPSM_GRIDPROPID}/OUT/${UGPSM_GRIDPROPID} \ (17) -catout fileorg=C file=${UGPSM_DIVOUT} 2>> ${CMDERR} (18) fi (19) gpdivdirrm -n ${UGPSM_GRIDPROPID} 2>> ${CMDERR} (20) (21)#-adsh_step_error (22)## エラー時の後処理 (23) exit (24)#-adsh_step_end ************************************************************************
-
uGPS - ManagerがWindows環境の場合
設定ファイルの指定例
DISTRIBUTE_DIRパラメータ:\\server1\data\divdata
SORT_TMPDIRパラメータ:\\server1\data\tmp
************************************************************************ (1)#-adsh_job gpfilecat (2)#-adsh_rc_ignore unset (3)export EXSORT64MSGOPT=8 (4)export EXSORT64SUPPRESSCATMSG=YES (5)export EXSORT64CATINPNOERR=YES (6)unset EXSORT64MGTOPT (7) (8)#-adsh_file STDERR \\\\\\\\server1\\\\data\\\\tmp\\\\{UGPSM_GRIDPROPID}_1 -normal del -abnormal keep (9)#-adsh_file CMDERR \\\\\\\\server1\\\\data\\\\tmp\\\\{UGPSM_GRIDPROPID}_2 -normal del -abnormal keep (10) (11)#-adsh_step_start GPFILECAT (12)## ファイルのマージ (13) if [ "${UGPSM_AUTOMRG}" = 1 ] ; then (14) exsort64 \ (15) -function copy \ (16) -catinp fileorg=C prefix=\\\\\\\\server1\\\\data\\\\divdata\\\\${UGPSM_GRIDPROPID}\\\\OUT\\\\${UGPSM_GRIDPROPID} \ (17) -catout fileorg=C file=${UGPSM_DIVOUT} 2>> ${CMDERR} (18) fi (19) gpdivdirrm -n ${UGPSM_GRIDPROPID} 2>> ${CMDERR} (20) (21)#-adsh_step_error (22)## エラー時の後処理 (23) exit (24)#-adsh_step_end ************************************************************************
このスクリプトを次に示すコマンドで実行することで,JP1/ASの標準エラー出力をSORT_TMPDIRパラメータ指定値/グリッドプロパティ識別子_1に,各コマンドの標準エラー出力をSORT_TMPDIRパラメータ指定値/グリッドプロパティ識別子_2に出力します。これらのファイルは,スクリプトが正常終了すれば削除され,エラー終了すれば削除されないで残ります。そのため,定期的にファイルを削除する運用を推奨します。
- コマンドの実行例
-
-
uGPS - ManagerがLinuxまたはAIX環境の場合
/opt/jp1as/bin/adshexec /opt/hitachi/ugpsm/bin/gpautoge.ash 2>> ${UGPSM_SDIR}/${UGPSM_GRIDPROPID}_1
-
uGPS - ManagerがWindows環境の場合
<JP1/ASのインストール先ディレクトリ>\bin\adshexec <uGPS - Managerのインストール先ディレクトリ>\\bin\\gpautoge.ash 2>> ${UGPSM_SDIR}\\${UGPSM_GRIDPROPID}_1
-
このスクリプトをカスタマイズする場合のポイントを次の表に示します。
行番号 |
処理内容 |
カスタマイズのポイント |
---|---|---|
1 |
JP1/ASジョブ名の宣言 |
− |
2 |
JP1/ASを常に正常終了するコマンドの定義 |
スクリプト実行時に未定義のSORT EE環境変数を無効化する際に,コマンドをエラー扱いにしないために必ず「unset」を定義します。ほかにも正常終了させたいコマンドを使う場合に追加します。 |
3〜6 |
SORT EE環境変数の設定 |
カスタマイズ不要ですが,使用したい機能などがある場合は,マニュアル「ソートマージ SORT Version9,SORT Version9 - Extended Edition」を参照してカスタマイズしてください。 |
8,9 |
JP1/AS一時エラーファイルの割り当て |
カスタマイズ不要ですが,一時エラーファイルの出力先を変更したい場合は,カスタマイズしてもかまいません。 uGPS - ManagerがWindows環境の場合は,${UGPSM_SDIR}は設定ファイルのSORT_TMPDIRパラメータの設定値を指定する必要があります。また,パス名の区切り文字として「\\\\」を指定する必要があります。UNC形式の場合,先頭は「\\\\\\\\」と指定してください。 |
11,24 |
JP1/ASジョブステップの宣言 |
− |
13〜18 |
SORT EEファイル連結 |
レコード編集など高度な使い方をしたい場合は,マニュアル「ソートマージ SORT Version9,SORT Version9 - Extended Edition」を参照してカスタマイズしてください。 uGPS - ManagerがWindows環境の場合は,${UGPSM_DDIR}は設定ファイルのDISTRIBUTE_DIRパラメータの設定値を指定する必要があります。また,パス名の区切り文字として「\\\\」を指定する必要があります。UNC形式の場合,先頭は「\\\\\\\\」と指定してください。 |
19 |
分割ファイル格納ディレクトリ削除 |
− |
21〜23 |
エラー時の後処理 |
− |