めもめも

このブログに記載の内容は個人の見解であり、必ずしも所属組織の立場、戦略、意見を代表するものではありません。

MapReduce デザインパターン (1)

はじめに

この一連のメモは、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 入門に従って構築しています。