4

Hadoop ストリーミング ジョブと通常の Java ジョブの違いは何ですか。後者よりも Hadoop ストリーミングを使用する利点はありますか。

もう 1 つ、私はmapreduce API (つまり、新しい API) を使用していますが、ストリーミングは非推奨の mapred API でしか利用できないと聞きました。それは...ですか ?

4

1 に答える 1

6

Hadoop ストリーミングは、開発者が Java のノウハウをあまり持っておらず、任意のスクリプト言語で Mapper/Reducer をより速く記述できる場合に有利です。

カスタム jar ジョブと比較すると、ストリーミング ジョブには、スクリプト (Python/Ruby/Perl) VM を開始する追加のオーバーヘッドもあります。これにより、多くのプロセス間通信が発生し、ほとんどの場合、ジョブの効率が低下します。

Hadoop ストリーミングを使用すると、入出力形式に制限が生じます。カスタムの入力/出力フォーマットを作成したい場合があり、カスタム jar を使用するのが自然な選択です。また、Java を使用すると、必要に応じて Hadoop の機能の多くをオーバーライド/拡張​​できます。

ここの回答から引用:

Hadoop には、他の言語で作成された MR ジョブを操作する機能があります。これはストリーミングと呼ばれます。このモデルでは、java には存在しないいくつかの制限があるマッパーとリデューサーのみを定義できます。同時に、入力/出力形式やその他のプラグインは Java クラスとして記述する必要があるため、意思決定を次のように定義します。

  • MR ジョブで再利用する必要がある深刻なコードベースがない限り、Java を使用してください。
  • 単純なアドホック ジョブを作成する必要がある場合は、python の使用を検討してください。

API でしか利用できないストリーミングに関してmapredは、意味がありません。ストリーミングを使用している間、マッパー/リデューサーは別の言語で記述されているため、実行するために Hadoop が内部で使用する API について心配する必要はありません。

于 2013-10-30T11:58:17.883 に答える