0

n 候補のリストから n*(n-1)/2 候補ペアを生成する必要があります。

これは、すべてのマッパー インスタンスまたはすべてのレデューサー インスタンスで実行できます。

しかし、この操作が縮小フェーズで実行された場合、マップ フェーズで実行されたよりもはるかに高速であることに気付きました。理由は何ですか?

マッパーは重い計算をサポートできませんか?

Mapper インスタンスがネットワーク上でこのような計算を行うと、どのような影響がありますか?

ありがとう!

4

1 に答える 1

0

簡単に言えば、マッパーを使用してデータを生成する場合、Hadoop はマッパーから redcuer にデータをコピーする必要があり、これには時間がかかりすぎます。

結果の合計データサイズ

生成された合計データは ですO(n^2)

mapper VS reducerによるデータ生成の比較

マッパーを使用してペアを生成する場合n*(n-1)/2、中間データをレデューサーにコピーする必要があります。Hadoop でのこのステップは、シャッフル フェーズと呼ばれます。レデューサーはこれらのデータを HDFS に配置する必要があります。シャッフル フェーズ中に原因でハード ディスクから読み書きされるデータの合計6* sizeof(intermediate data)は、非常に大きくなる可能性があります。

一方、データがレデューサーによって生成された場合、O(n^2)中間のデータ変換は不要です。そのため、パフォーマンスが向上する可能性があります。

したがって、パフォーマンスの問題は主に計算ではなくデータ変換によって引き起こされます。また、ディスクアクセスがない場合、マッパーとリデューサーのパフォーマンスは同じです。

マッパーデータ生成戦略のパフォーマンスを改善する方法

それでもマッパーを使用してデータを生成したい場合はio.sort.factor、圧縮をオンにするとパフォーマンスが向上する可能性があります。

于 2013-06-05T04:49:33.493 に答える