4

クラスのrunOldMapper(...)runNewMapper(...)メソッドの違いがわかりません。Hadoop はからのパラメーターMapTaskに基づいて決定します。しかし、フレームワークのどこでいつこのパラメータが設定されたのでしょうか? デフォルト値はすべてのジョブで FALSE だと思います。which setsを呼び出すことで値を TRUE に設定できますが、いつ、なぜこのパラメーターを設定する必要があるのでしょうか?"useNewApi"JobConfJobConf.setUseNewMapper(boolean flag)"mapred.mapper.new-api"

4

1 に答える 1

3

この動作がmapred.mapper.new-api構成によってトリガーされるという仮定は正しいです。

新しいジョブまたは古いジョブのconf/clientを使用しているかどうかに応じて、ソースで次のものを探します。

  • org.apache.hadoop.mapreduce.Job.submit()setUseNewAPI()プライベートメソッドを呼び出すメソッド。これによりnew-api、古いマッパー/レデューサークラスのプロパティが設定されているかどうかに応じてプロパティが構成されます
  • org.apache.hadoop.mapred.JobConf-質問で指摘したように、新しいAPIマッパー実装を使用している場合は開発者がメソッドを呼び出す必要がありsetUseNewMapper(true)ます(デフォルトではfalseでマッパークラスはmapred.Mapperインターフェースを実装し、マッパーがmapreduceを拡張する場合はtrueです。マッパークラス)
于 2012-12-01T14:11:57.747 に答える