Hadoop入力データファイルの主キーの分布を調べその分布に応じて最適なタスクの実行をスケジュールするとともに、件数の多いキーが同じタスクに割り当たらないようにすることで、Hadoopジョブの実行時間を短縮する機能です。実行可能なReduceタスク数(mapred.reduce.tasks)も実行環境に適した値に自動的に設定されます。
このため、スレーブサーバの故障や追加による多重度の変化が起こった際に、Reduceタスク数をチューニングする手間を省くことができます。
この振り分け方法を利用するためには、あらかじめ、「主キー一覧ファイル」を作成しておく必要があります。この主キー一覧ファイルをMapReduce設定ファイルの「主キー一覧ファイルの指定」で指定してHadoop実行シェルを実行します。
参考
キー分布を考慮した振り分けでは、主キーの分布に偏りがある場合にHadoopジョブの実行時間を短縮することができます。
「主キー一覧ファイル作成シェル」を実行すると、主キーの分布の偏りを確認することができます。
注意
最適化によるReduceタスクの数が優先されるため、MapReduce設定ファイルにReduceタスク数(mapred.reduce.tasks)を指定している場合、その値は無視されます。
Hadoop実行シェルの実行時、一時ディレクトリ(Javaのシステムプロパティjava.io.tmpdirのディレクトリ、デフォルトでは/tmpディレクトリ)に「_mainkeyList」ディレクトリが生成され、その配下に作業用ファイルが生成されます。「_mainkeyList」ディレクトリが使用するファイルサイズは、利用する主キー一覧ファイルと同等です。
ジョブ終了と同時に作業用ファイルは削除されます。