wiki:HadoopCombineDetail

Combineがすること

作者:kosuke

参考: http://wiki.apache.org/hadoop/HadoopMapReduce

1. リストを作る

combinerを使うときは、Mapはすぐにkey-valueを出力ファイル(SequenceFile?)に書かない。key-valueが集められて、keyとvalueのリスト([A,(b,c・・・)]のようなリスト)を作る。

2. リストを出力する

key-valueのペアがある一定の数中間ファイ(SequenceFile?)に書かれると、メモリ上にある1で作られたリスト全てをcombineの reducemethodに送る。ここで、Reduce処理をする。そして、combineの演算で得られたkey-valueのペアを中間ファイルに出力する。これによって中間ファイルの容量を抑えることができる。

3. 例 WordCountMapReduce? Applicationの場合

WordCountMapReduceApplicationとは、入力ファイル内の単語の数を数えるアプリケーションである。 まず、メモリ上にあるMapperが出力したデータを集める。このとき、一つのワードに対して、一つのリストを生成する。(例えば、[Word,1], [Word2,1])いったん、key-valueのペアの出力数が一定数を越えると、combineはユニークのワードに対して一回読み込みを始める。そのとき、combineは(word1,combineが読み込んだそのワード1の数)のようなペアを中間ファイルに出力する。しかし、ディスクへの出力やディスクからの読み込みはかなり少ない.