1

AmazonEC2m1.smallインスタンスでMapReduceの単語数の例をテストしています。Amazonのコマンドラインスタートガイドに従いました。

bin /ec2hadooplaunch-clusterテスト2

このコマンドを使用すると、2つのスレーブノードがあります。(合計3つのインスタンスが実行されています)次に、マスターノードにログインしてhadoopプログラム(jarファイルにバンドルされています)を実行できます。35分かかりました。

スケーラビリティの実験では、4つのインスタンスを使用して同じプログラムを実行しました

bin /ec2hadooplaunch-clusterテスト4

驚いたことに、パフォーマンスの向上は見られませんでした。MapReduceアプリケーションはほぼ同じ時間(33分)かかりました

問題はどこにあるのでしょうか?それは許容できる行動ですか?

In mapred-site.xml
mapred.tasktracker.map.tasks.maximum is set to 1
mapred.tasktracker.reduce.tasks.maximum is set to 1

どんな提案でも大歓迎です。

4

2 に答える 2

0

構成に基づいて、ノードごとにそれぞれ最大1つのマップタスクと1つの削減タスクがあります。実行しているジョブのタイプによっては、これらのパラメーターをノード上のコアの数に設定すると便利な場合があります。特に、map/reduceタスクが計算コストの高い場合。

コメントで述べたように、削減フェーズがジョブの全体的なパフォーマンスを支配している場合は、この部分に焦点を当てる必要があります。Hadoopでは、生成される出力ファイルの数に直接影響するため、ジョブのreduceタスクの数をジョブの構成で指定できます。

単一のreduceタスクがあると、単一の出力ファイルが得られます。N個のreduceタスクがあると、N個の出力ファイルになります。この各ファイルには、キーでソートされたデータが含まれています。さらに、マップタスクから特定のキーのすべてのデータを取得するために、reduceタスクが保証されます。

つまり、reduceタスクの数を増やすと、ジョブの全体的なパフォーマンスは向上しますが、複数の出力ファイルが生成されます。必要に応じて、これらのファイルは、単一のreduceタスクの場合と同じように、同じ単一の出力ファイルを確実に取得するために、2番目のマップリデュースジョブ(またはHadoopの外部)のいずれかでキーでマージおよびソートする必要があります。

于 2013-03-02T16:06:58.177 に答える
0

まず、適切に構成され、クラスターの成長に伴ってレデューサーの数が増える場合、Hadoopは線形スケーラビリティ
を示すはずです。得られる結果の根本的な原因は単一のレデューサーだと思います。すべてのマッパーの結果が単一のレデューサーに渡されると、クラスターサイズによるパフォーマンスの向上が制限されます。レデューサーの数を(クラスター内のノードの数で)4に設定すると、ゲインが表示されます。
さらに、SmallインスタンスでのHadoopの効率的な操作について疑問があります。メモリが限界に近づいており、スワッピングが開始され、パフォーマンスが低下する可能性があります。さらに、このようなインスタンスは1GBイーサネットのごく一部しか取得できず、制限要因になる可能性もあります。

于 2013-03-02T17:38:52.883 に答える