web-dev-qa-db-ja.com

「マップのみ」Hadoopジョブを記述する方法

私はhadoopの初心者で、map-reduceプログラミングのスタイルに慣れてきましたが、問題に直面しました:時々、ジョブのマップだけが必要で、マップ結果を出力として直接必要とするだけですフェーズはここでは必要ありませんが、どうすれば実現できますか?

41
Breakinen

これにより、減速機がオフになります。

job.setNumReduceTasks(0);

http://hadoop.Apache.org/docs/current/api/org/Apache/hadoop/mapreduce/Job.html#setNumReduceTasks(int)

58
Thomas Jungblut
8

端末からのみマッパーでジョブを起動する必要がある場合に非常に役立ちます。 hadoop jarコマンドで0のレデューサーを暗黙的に指定することで、レデューサーをオフにできます。

-D mapred.reduce.tasks=0 

したがって、結果コマンドは次のようになります。

hadoop jar myJob.jar -D mapred.reduce.tasks=0 -input myInputDirs -output myOutputDir

後方互換性のために、Hadoopは「-reduce NONE」オプションもサポートしています。これは「-D mapred.reduce.tasks = 0」と同等です。

4
Alex

Hadoopジョブを管理するスケジューラーとしてoozieを使用している場合、プロパティmapred.reduce.tasks(ジョブごとのデフォルトのリデュースタスクの数)を0に設定できます。マッパーをプロパティmapreduceに追加できます。 .map.class、およびリデューサーが必要ないため、プロパティmapreduce.reduce.classを追加する必要もありません。

<configuration>
   <property>
     <name>mapreduce.map.class</name>
     <value>my.com.package.AbcMapper</value>
   </property>
   <property>
     <name>mapred.reduce.tasks</name>
     <value>0</value>
   </property>
   .
   .
   .
<configuration>
0
Neha Kumari