2012-01-19 12 views
1

mapreduceジョブのようにHDFSに入力する必要がないと聞きました。それは他のファイルシステム上にすることができます..誰かが私にこれ以上の入力を提供してくれますか?Hadoop MapReduceは他のファイルシステムでも実行できますか?

私はこれで混乱していますか?スタンドアロンモードでは、ローカルファイルシステム上にデータを置くことができます。しかし、クラスタモードでは、他のファイルシステムへのジョブのマップをどのように指摘できますか?

答えて

3

いいえ、HDFSにする必要はありません。たとえば、TableInputFormatを使用してHBaseをターゲットとするジョブは、ネットワーク経由でHBaseノードからマップ・ジョブへの入力としてレコードをプルします。 DbInputFormatを使用すると、SQLデータベースからジョブにデータをプルすることができます。あなたは、NFSマウントのデータを読み取るような何かをした入力フォーマットを構築することができます。

可能であれば、ネットワーク経由でデータを取得しないようにします。ディスクスループット>ネットワークスループットのため、ジョブが実行されているノードにローカルにデータを置くことができれば、MRパフォーマンスははるかに向上します。

2

ジョブに設定されたInputFormatに基づいて、Hadoopは任意のソースから読み取ることができます。 Hadoopは2つのInputFormatsを提供しています。 custom InputFormatも書くのは難しくありません.Jobに独自の形式を入力することを考えてみましょう。

同じ行では、HadoopにはOutputFormatsという2つの組み合わせがあり、カスタムOutputFormatも記述するのは難しくありません。

ここには、DBInputFormatのnice articleがあります。

+0

こんにちは、ありがとうございました。私の質問は、クラスタ内でhadoop mapreduceジョブを実行しながら、入出力ファイルパスをローカルファイルシステムのパスとして与えることができるかどうかです。すなわち、地図作成ジョブは、HDFSをインストールしたローカルファイルシステムから入力を受け取ることができる。もしそうなら、私に簡単な例を教えてもらえますか? – MRK

+0

私はそうは思わない。これを回避するユースケースはありますか?あなたの 'ローカルデータ 'を持つノードがダウンしたら、データはどうなりますか? –

0

これを達成するもう1つの方法は、実際のデータがある情報を含むHDFSファイルを入れることです。 Mapperはこの情報を取得し、処理のために実際のデータを取得します。 たとえば、処理するデータのURLを持つ複数のファイルを作成できます。 このケースでは、データのローカリティが失われます。それ以外の場合は問題ありません。

関連する問題