3

     Map-reduce は初めてで、Hadoop Pipes を使用しています。

     レコード数を 1 行に 1 つずつ含む入力ファイルがあります。3 つの単語が共通する行を出力する簡単なプログラムを 1 つ作成しました。map 関数では、単語をキーとして、レコードを値として出力し、reduce 関数でそれらのレコードを比較しました。

     次に、Hadoop のパフォーマンスを、ファイルからレコードを読み取って単語に分割し、データをマップにロードする単純な C++ プログラムと比較しました。マップには、単語がキー、レコードが値として含まれます。すべてのデータを読み込んだ後、そのデータを比較しました。
     しかし、Hadoop の Map-reduce は、単純な C++ プログラムと比較して、同じタスクを実行するのに時間がかかることがわかりました。Hadoop でプログラムを実行すると、約 37 分かかりますが、単純な C++ プログラムでは約 5 分しかかかりません。

     私がどこかで間違っているかどうかを理解するのを手伝ってください。私たちのアプリケーションにはパフォーマンスが必要です。

4

1 に答える 1

2

ここで注意すべき点がいくつかあります
。Hadoop は高性能ではありません。スケーラブルです。小さなデータセットで同じことを行うローカルプログラムは、常に Hadoop よりも優れています。そのため、マシン上のクラスターで実行し、Hadoop の並列処理を楽しみたい場合にのみ、その使用法は意味があります。
また、Hadoop ストリーミングは、行ごとにタスク スイッチがあるため、パフォーマンスに関しては最善の方法ではありません。多くの場合、Java で記述されたネイティブ Hadoop プログラムの方がパフォーマンスが向上します。

于 2012-12-04T07:57:28.153 に答える