2012-01-24 6 views
1

私はMRストリーミングジョブを持っています。私のコードはC++です。マッサーだけの仕事で、減速師なし。ジョブへの入力は、3つのファイルを含むディレクトリです。 Jobは3つのマッパーを作成します。各マッパーは1つの入力ファイルを処理し、異なる形式の1つの出力ファイルを生成します。入力ファイルと出力ファイルの関連付け

MyDir/file1 
MyDir/file2 
MyDir/file3 

出力ファイルのような、次のとおりです:私は、出力ファイルに入力ファイルを関連付けたい

MyDir/Output/part-00000 
MyDir/Output/part-00001 
MyDir/Output/part-00002 

よう

入力ファイルがあります。例えば、入力ファイルMyDir/file1は出力ファイルMyDir/Output/part-00002、すなわち入力ファイルMyDir/file1を処理したマッパーは出力ファイルMyDir/Output/part-00002を生成した可能性があります。

この関係、つまりどの入力ファイルがどの出力ファイルに対応しているか知りたいです。これを知る簡単な方法はありますか?

答えて

0

Hadoopの設計方法では、出力ファイルの名前を明示的に指定しなくても、出力ファイルの数が実行される最終タスクの数に相当する減速機(減速機を使用していないので、あなたの場合はマッパー)。

後でHadoopが3つではなく、より多くのマッパー/レデューサーを実行することを決定した場合(入力ファイルが大きく、使用可能なノードが多いほど)、出力ファイルの数が異なります。

+0

私はそれを得ることはできません - あなたは例でもう少し明確になることができますか? 'Hadoopが後にもっと多くのマッパー/レデューサーを走らせることを決定した場合 - Hadoopはマッパー/レデューサーの数を飛行機に決定しません。マッパーの数は入力スプリットの数に等しく、ユーザーはリデューサーの数を指定します。 –

+0

時間の経過とともに、異なるサイズの異なる入力ファイルに対して同じHadoopジョブを実行すると想定しています。一般的な使用例は、前日から取得したログファイルの日次分析です。 – etta

+0

分割や.gzファイルの使用を避けることによって、各ファイルが1つのマッパーで処理されるようにすることができます。 – sunillp

関連する問題