0

私の Hadoop プログラムのマッピング フェーズでは、多数の一意のキーが生成されます (あるデータ セットでは約 200K キー、別のデータ セットでは約 900K キー)。各キーは、60 文字の数字を含む文字列値です。Hadoop プログラムのソート/シャッフル フェーズに時間がかかりすぎます。このような多数のキーに対して、並べ替え/シャッフル フェーズをより効率的にする方法はありますか?

4

2 に答える 2

0

レデューサーに送信された「マップフェーズ」出力を組み合わせて、ネットワークの過熱を減らすためにコンバイナーの使用を検討する必要があります。

あなたは WritableComparator に関しては正しいです。私が知る限り、並べ替えフェーズで 2 つのオブジェクトを比較する方法は、オブジェクトをシリアル化すると (マッパーからの出力)、与えて注文するために Hadoop を使用するためです。 、それらを逆シリアル化する必要があるため、「逆シリアル化フェーズ」を回避し、バイトレベルで比較を行う方がはるかに優れています。

compareメソッドfromをオーバーライドする場合は注意が必要WritableComparableです。適切に行うのはかなり難しいため、ここで参照しているメソッド from は次のGrepCodeとおりです。

http://grepcode.com/file/repository.cloudera.com/content/repositories/releases/com.cloudera.hadoop/hadoop-core/0.20.2-737/org/apache/hadoop/io/WritableComparator.java# WritableComparator.compare%28byte%5B%5D%2Cint%2Cint%2Cbyte%5B%5D%2Cint%2Cint%29

編集

MapReduce のパフォーマンスを改善するためのいくつかのヒントを得るために、私が素晴らしい記事だと思うものを追加します。

http://blog.cloudera.com/blog/2009/12/7-tips-for-improving-mapreduce-performance/

于 2013-10-29T23:56:42.207 に答える