MapReduceアプリケーションではCOBOLアプリケーションを指定して実行できますが、シェルを指定することもできます。シェルの利用により、複数のCOBOLアプリケーションを実行したり、コマンドと組み合わせてCOBOLアプリケーションを実行したりできます。
Hadoopでは、ジョブを実行するたびに分散処理のオーバヘッドが発生します。シェルを利用して、複数のCOBOLアプリケーションやコマンドをまとめて一度のジョブで実行すると、そのオーバヘッドの影響を小さくすることができます。
ただし、入出力データファイルはシェルで実行されるいずれかのアプリケーションで一度だけしか読み書きできません。
Mapアプリケーションとしてシェルを実行し、シェルの中でCOBOLアプリケーション(1)、(2)、(3)を実行しています。
COBOLアプリケーション(1)でMap入力データファイルを読み込み、COBOLアプリケーション(3)でMap出力データファイルを書き込んでいます。
COBOLアプリケーション(1)、(2)、(3)の間のデータ受け渡しは、カレントディレクトリに中間ファイルを出力して利用します。