従来の MapRudece と異なり、MaxCompute に搭載されている 拡張 MapReduce モデルは、基盤となるスケジューリングモデルと I/O モデルが改良されているため、実行時の冗長な I/O 操作を回避できます。
従来の MapReduce モデルでは、MapReduce 操作の後に、分散ファイルシステム (HDFS や MaxCompute テーブルなど) に毎回データをロードする必要があります。しかし、一般的な MapReduce アプリケーションは、複数の MapReduce ジョブから構成されるため、ジョブごとにデータへの書き込みが必要です。 以下の Map タスクは、後続の Shuffle 操作の準備段階として、データを読み込むためだけに使用されるタスクの例ですが、結果として、冗長な I/O 操作が発生します。
MaxCompute の計算スケジュールロジックは、さらに複雑なプログラミングの枠組みに対応しています。 前述のシナリオでは、次の Reduce 操作は Reduce 操作後に実行可能で、Map 操作の挿入は必要ありません。 このようにして、MaxCompute は拡張 MapReduce モデルを提供します。つまり、Map>Reduce> Reduce など、多数の Reduce 操作が Map 操作の後に続くことができます。
Hadoop Chain Mapper/Reducer は、アナログシリアル Map や Reduce 操作にも対応していますが、拡張 MaxCompute (MR2) モデルと大きな違いがあります。
Hadoop Chain Mapper/Reducer は、従来の MapReduce モデルを基盤とし、元の Mapper や Reducer 後にいくつかの Mapper 操作を加えただけです (Reducer 操作は追加できません) 。 拡張 MapReduce の利点は、以前使用した Mapper のビジネスロジックを再利用できる点です。また、1 つの Map ステージや Reduce ステージを複数の Mapper ステージに分割できます。基盤となるスケジューリングおよび I/O モデルは本質的には変更されていません。
MaxCompute と比べると、MR2 は基本的に Map/Reduce 関数が記述通りに実行されます。 主な違いはパフォーマンスにあります。詳細については、「拡張 MapReduce 例」をご参照ください。