「Hadoop」は、米Google社が考案した分散データ処理技術「MapReduce」をオープンソース・ソフトウエアで再実装したものです。Web系企業では、ユーザーのアクセスから得られる膨大なデータを解析するツールとして定着が進んでいます。最近ではWeb系以外の一般企業でもHadoopの活用が検討されてきています。

 今回は、企業システムでHadoopを利用する意義と、ペタバイト・クラスのデータ処理を実現するHadoopの実装を解説します。

Google論文の衝撃

 HadoopやMapReduceは「安価なサーバーで大量のデータを高速処理」「バッチの処理時間が劇的に短縮」などと紹介されています。とても高度な技術ととらえている方もいるかもしれませんが、実はそれほど複雑なものではありません。

 MapReduceは、Googleが2004年に論文(http://labs.google.com/papers/mapreduce.html)で公開した、多数のサーバーでデータを並列処理するための仕組みです。多数のサーバーでデータを解析する方法は、HPCクラスタと呼ばれる技術がスーパーコンピュータの世界で研究されてきましたが、素粒子物理学や気象予報などの複雑なデータ解析に利用されるHPCクラスタと比較すると、MapReduceのデータ解析は意外なほど単純です。

 Googleでは、様々なWebサイトから収集したHTML文書を解析するためにMapReduceを利用しています。同社の論文には図1のような処理が記載されています。基本的には、収集したデータを順番に調べていくシンプルなバッチ処理にMapReduceを利用しているようです。

図1●GoogleでのMapReduceの使用例
図1●GoogleでのMapReduceの使用例

 それでは、なぜ、この論文が世の中に衝撃を与えたのでしょうか?答えはGoogleが扱うデータ量にあります。論文には、2004年8月の1カ月だけで、3ペタバイト以上のデータをMapReduceで処理したと記されています。一般企業のシステムでは1テラバイトのデータを扱うだけでも大変なことですから、当時、3ペタバイトのデータを処理しようとは、考える人もいなかったかも知れません。

 このように、「単純な処理であっても、想像もしなかった量のデータを対象とすることで、新しい価値を生み出せる」ということを示した点が、Googleの論文、そして、MapReduceに隠された意義なのです。Googleの検索エンジンが日々生み出す価値に、疑問の予知はないでしょう。