はじめに
この一連のメモは、Data-Intensive Text Processing with MapReduceに掲載されている Pseudo-code を実際に Hadoop で実行可能な Java クラスとして書いてみることを目的としています。
Java のソースコードを掲載するついでに、各デザインパターンのポイントをメモ書きしていきます。
筆者は、Perl 屋さんなので、(MapReduce と関係なく)Java のコードとしていけてない所は、やさしくご指摘下さい。m(_ _)m
MapReduce デザインパターンの心
MapReduce で複雑な処理を行うには、Shuffle 処理をいかに活用するかが1つのポイント。
(1) Map の出力の Key に何をつかうか
(2) Reduce に渡すデータの分割方法をどうするか
の2点をよく考える事で、Reduce がより有用な結果を計算できるようになります。また、Map 処理については、次の2点の活用がポイント。
(3) Map の出力の Key, Value には、タプル、ハッシュなどの構造化データが利用できる。
(4) レコード毎の処理結果以外の追加情報を出力しても構わない。
実行環境
この後のサンプル・コードを実行するための環境は、Linux at IBM - Hadoop 入門に従って構築しています。