Hadoopは、普及品のPCサーバーを多数つなげて、莫大な情報を処理できるようにしたオープンソース・ソフトウエアです。Yahoo!やFacebookなどのWebサービスの開発者が多数、Hadoopの開発に参加していて、これらの企業によって実際に活用されています。

 本連載ではまず、いま熱い視線を集めているHadoopを実際に触っていくことで、Webサービスを支えている「大規模データ処理」を体験していきます。

 まず最初に、Hadoopとは何か、何が「うれしい」のか、を説明します。それには、「スケールアウト」という言葉の意味を知っておく必要があります。Hadoopのメリットは、スケールアウトの問題点を克服しているところにあるからです。

スケールアップとスケールアウト

 あなたが、企業のWebサーバーの管理者だったとしましょう。

 サーバーを立ち上げた当初は、Webサイトの訪問者も少なく、1台のPCで勤務時間内に余裕でアクセスログの集計処理を終えることができていました。しかし会社の規模が大きくなって、訪問者数が徐々に増えてきました。集計処理に長い時間がかかってしまい、勤務時間内には終わらなくなってしまいました。

 このような問題が起こったとき、あなたは以下のうちどちらを選びますか?

解決策(1) PCをより高性能なものに買い換える
解決策(2) 同程度のスペックのPCをもう1台買い増しする

 2番目の方法の場合、アクセスログを2つに分割、2台のPCで同じ集計プログラムを実行し、それぞれ得られた結果を最後に合算することになります。

 あなたがもし「楽をしたい」のなら、(1)が有利でしょう。(2)の方法は、アクセスログを分割したり、合算したりという余分な手間がかかってしまいます。

 でも、さらにアクセス数が増えていき、買い換えた新しいPCでも処理が間に合わなくなってきたとしたらどうでしょうか? 「そんなの簡単だよ。増えた利益でもっと高性能のPCを買えばいいんじゃない?」と思うかもしれません。

 しかし2倍の値段のPCを買えば、性能は2倍になるでしょうか? 2倍のコストをかけても、性能はせいぜい数割アップする程度ではないでしょうか。(1)の方法は、当面の解決策にはなりますが、そのうちコスト面で限界に達してしまいます。

 (1)の方法を「スケールアップ」、(2)の方法を「スケールアウト」と呼んでいます。処理の規模がどんどん拡大していくタスクについては、いかにスケールアウトさせるかを考えておくことが必要になります。