Mapタスクとして実行する外部プログラムは、利用するファイルごとに指定します。
Reduceタスクとして実行する外部プログラムは、利用するファイル数に関わらず一つだけ指定します。
設定内容 | 設定名 | 設定値 | 備考 |
---|---|---|---|
Mapタスクとして実行する外部プログラム | extjoiner.map.streamprocessor.nn | 外部プログラム実行のコマンドラインを指定します | Map/Reduceタスクのいずれか片方を省略可 |
Reduceタスクとして実行する外部プログラム | extjoiner.reduce.streamprocessor |
外部プログラムの入出力データファイルを外部プログラム実行のコマンドライン引数で指定する必要があります。引数で指定する値は以下の通りです。
ファイル種別 | 引数で指定する値 | 外部プログラムに渡される実際の値 |
---|---|---|
Map入力データファイル | %innn | Hadoop入力データファイルが分割された、Map入力データファイルのパス |
Map出力データファイル | %outnn | Hadoopによって用意された、Map出力データファイルのパス。Mapタスク終了後、Shuffle&sortへの入力ファイルとなる |
Reduce入力データファイル | %innn | Map出力データファイルに対してShuffle&sortの処理が行われた、Reduce入力データファイルのパス |
Reduce出力データファイル | %outmm | Hadoopによって用意された、Reduce出力データファイルのパス |
表中の「nn」は、Hadoop入力データファイルの個数(ファイルの種類の数)に対応します。また、表中の「mm」は、Hadoop出力データファイルの個数(ファイルの種類の数)に対応します。「nn」と「mm」には、それぞれ01~64の数値を指定します。
Reduceタスクとして実行する外部プログラムを省略する場合、Apache Hadoopのプロパティ「mapred.reduce.tasks」に0を指定してください。
外部プログラムとしてJavaアプリケーションを実行する場合の指定例
外部プログラムとしてJavaアプリケーションを実行する場合は、外部プログラムの指定として以下の値を指定します。
■Mapタスクとして実行する外部プログラム
/usr/lib/jre-fj/bin/java -cp /mnt/pdfs/hadoop/work/sample.jar TestMap %in01 %out01
■Reduceタスクとして実行する外部プログラム
/usr/lib/jre-fj/bin/java -cp /mnt/pdfs/hadoop/work/sample.jar TestReduce %in01 %in02 %out01
javaコマンド実行時のクラスパスとして、外部プログラムを含んだjarファイルのパスをDFSのマウントディレクトリの絶対パスで指定します。