ページの先頭行へ戻る
Interstage Big Data Parallel Processing Server V1.2.0 ユーザーズガイド
FUJITSU Software

17.6.2 MapReduceアプリケーション作成時の注意点

MapReduceアプリケーションを作成する場合には以下のような点に注意してください。

Mapタスクから出力するKeyの選択

Mapタスクが出力するKeyにもとづいて各Reduceタスクに割り当てるデータ量が決定されます。そのため、分布に偏りがあるKeyを使用すると各Reduceタスクのデータ量も偏り、最も多くデータが割り当たったReduceタスクがHadoopジョブの処理時間を左右することがあります。

Mapタスクが出力するKeyは、Reduceへのデータの割り当て量の均等化を考慮して決定してください。

Mapタスクから出力するValueの削減

Mapタスクが出力するデータ量は、作業ファイルのI/OコストやReduceタスクの全フェーズの処理コストに影響を与えます。

Reduceタスクの処理に必要のないデータは可能な限りMapタスクで取り除き、出力しないようにしてください。

プログラムの軽量化

MapReduceアプリケーションのmapメソッドやreduceメソッドはデータ1件につき1回呼び出されます。これらのメソッド内の処理はすべて、データ件数と同じ回数、数万回、数億回と実行されることになります。そのため、通常のJavaアプリケーションで特に問題なく使用している汎用的なJavaクラスやメソッドが性能に多大な影響を与えることがあります。

mapメソッドやreduceメソッドは可能な限り軽量に実装するようにしてください。


Hadoopジョブの実行に予想外の処理時間を要している場合、1つのタスク試行にかかった時間と処理件数から1件あたりの平均処理時間を求めて、その妥当性を評価してください。通常、その処理時間のほとんどはmapメソッドやreduceメソッドの実行時間が占めています。