wiki:HadoopReduceDetail

Version 2 (modified by kosuke, 10 years ago) (diff)

--

Reduceのすること(参考: http://wiki.apache.org/hadoop/HadoopMapReduce)

作者:kosuke

1. シャッフルする(これはたぶんReduceのやることではない)

Map関数から出力されたkey,valueが中間ファイルに書き出され始めると(中華んんファイルが小さい場合は書き出されない。)、マスタを経由してReduceスレーブに中間ファイルの場所が伝えられる。Reduceはその場所情報を基に、中間ファイルを取り寄せてキーにしたがって並べ替えが始まる。(キーごとにグループみたいなものが作られる。)中間ファイルが小さい場合は、オンメモリですべて処理されますが、大きい場合は、書かれる。また、中間ファイルが生成されるたびに次々とシャッフルされるため、中間ファイルが書き込みが終了するとすぐにシャッフルも終了する。

2. Reduce処理する

シャッフルの終わったグループから、Reduceにシャッフルが終わったデータを渡す。また、Reduceがデータを呼び出すときは、keyが小さい順に呼び出されるのでReduceの出力はkeyの順になることが保証される。Reduceの出力は、一つのReduce(一つのグループ)ごとに一つのファイルに書き込まれる。そのファイルのフォーマットは、JobConf?.setOutputFormatで決められている。