web-dev-qa-db-ja.com

Hadoopジョブを作成するには、mapredまたはmapreduceパッケージを使用する方が良いですか?

MapReduceジョブを作成するには、古いorg.Apache.hadoop.mapredパッケージまたは新しいorg.Apache.hadoop.mapreduceマッパーとリデューサー、ジョブ用のパッケージ...最初のパッケージは非推奨としてマークされていましたが、その間に元に戻りました。古いmapredパッケージまたは新しいmapreduceパッケージを使用してジョブを作成する方が良いのか、なぜかと思います。それとも、古いマップされたパッケージでのみ利用可能なMultipleTextOutputFormatのようなものが必要かどうかに依存していますか?

45
momo13

機能面では、古い(o.a.h.mapred)と新しい(o.a.h.mapreduce)API。唯一の大きな違いは、古いAPIではレコードがマッパー/リデューサーにプッシュされることです。新しいAPIはプル/プッシュメカニズムの両方をサポートしています。プルメカニズムについての詳細情報 here を取得できます。

また、古いAPIは0.21以降 非推奨ではありません です。新しいAPIについての詳細情報 こちら をご覧ください。

いくつかのクラス(MultipleTextOutputFormatなど)は新しいAPIに移行されていません。これと上記の理由により、古いAPIを使用することをお勧めします(通常、翻訳は非常に簡単です)。

43
Praveen Sripati

古いAPIと新しいAPIの両方が優れています。新しいAPIはよりクリーンです。可能な限り新しいAPIを使用し、新しいAPIにはない特定のクラス(MultipleTextOutputFormatなど)が必要な場合は古いAPIを使用してください

ただし、同じMapreduceジョブで古いAPIと新しいAPIを混在させないように注意してください。それは奇妙な問題につながります。

14
Hari Menon

古いAPI(マップ済み)

  1. パッケージorg.Apache.hadoop.mapredに存在します

  2. マップを提供するか、ジョブ構成を減らします。

  3. イテレーターに基づいて、指定されたキーの値を減らします
  4. パッケージ 概要

新しいAPI(mapreduce)

  1. パッケージorg.Apache.hadoop.mapreduceに存在します

  2. ジョブの設定は、Configurationの拡張である別のクラスCalled JobConfによって行われます。
    クラス

  3. Iterableに基づいて、指定されたキーの値を減らします

  4. パッケージの概要

2
anish