今回はいよいよ、MapReduceを使ってデータ処理を実践してみます。その前にまず、MapReduceの仕組みを大まかに理解しておきましょう。

 Hadoopの特徴の一つは、「並列処理可能な小さなタスクに分割し、空いたCPUに順次割り当てる」という点です。どんなに台数が多くても、全体の処理を独立した小さなタスクに分割して並行処理することで、CPUなどの資源を効率的に使うことができるというものです。この仕組みを実現しているのが、MapReduceです。

図1●MapReduceが扱うkey-valueとkey-valuesデータモデル
図1●MapReduceが扱うkey-valueとkey-valuesデータモデル
[画像のクリックで拡大表示]

 MapReduceはすべてのデータを非常にシンプルな形で表現します。大きく分けて、「key-valueペア」と「keyvaluesペア」の2つのモデルがあります(図1)。後者のvalueに「s」が付いているところが違います。

 key-valueペアはその名の通り、 1個の「key」と1個の「value」がペアになっているデータです。例えば、 keyが「東京タワー」でvalueが「放送塔」です。keyが「バナナ」で、valueが「2(個)」もそうです。

 key-valuesペアは、1個の「key」に、複数の「value」が対応付けられたデータです。 例えば、keyが「東京タワー」で、valuesが「放送塔, 観光名所, 映画」のような場合です。キーが「3年A組」で、valuesが「伊藤さん、岩国さん、上野さん、片山さん、・・・・」のようなデータもあります。

 このように、keyとvalueには様々なデータ型が使えます。文字列だけでなく、整数や浮動小数点、XML要素などを扱えます。