Hadoopが注目される理由
ハードウェアの進化に伴ってサーバの性能は年々向上しています。ムーアの法則にあるように、その中でもCPUなど半導体の性能は著しく向上しています。
一方でハードディスクの性能はこれに追いついておらず、データの読み書き時には待ち状態になってしまう場合もあるでしょう。 つまり、データ量が多ければ多いほど、待ち状態がボトルネックとなってしまうのです。ガートナーによると、「全世界の情報量は、年間で最低でも59%という高率で増加している」とのことですが、これほどの勢いで増え続けるデータを処理するには、もはや今までのようにハードウェアの進化だけに頼っているわけにはいかないのです。そこで改めて見直されたのが、分散処理技術でした。
Googleでは1990年代後半から、上記の問題点を解決するために汎用のハードウェアを使用した独自の分散処理基盤システムを構築し、2000年代前半に2つの論文を公開しました。まず2003年に分散ファイルシステムである「GFS」(Google File System)について、次に2004年、分散処理の仕組みである「MapReduce」について論文を発表したのです。
以前からMPI(Message Passing Interface)などを使用して分散処理プログラムを記述することは可能でしたが、プログラムが大規模になるに従い複雑化し、エラー処理や障害処理などを記述するのが困難でした。Googleのアプローチは、部分障害やリカバリ、一貫性等を解決する新しいアプローチだったのです。
分散ファイルシステムではファイルを一定のサイズに分割し、分散して複数のサーバに格納しておき、並列で読み出すことでスループットを向上します。分散処理技術では、この分割されたファイルを複数のサーバで並列処理することで、スケールアウトすることができます(図1参照)。
この論文を見たDoug Cutting氏(現Cloudera・チーフアーキテクト)が自身のプロジェクト用にJavaで実装し、オープンソースで公開したのがHadoopの始まりです。その後、Apache財団の独立したプロジェクトとして開発が続けられており、Hadoop分散ファイルシステムである「HDFS」(Hadoop Distribution File System)と、比較的シンプルな分散処理フレームワークであるMapReduceを使用することで、障害対応などはすべてHadoop側に任せられるようになり、従来は困難だった大規模な分散システムを構築することができるようになりました(図2参照)。一般の企業ではそれほど大規模な分散環境は必要ありませんが、Hadoopの現バージョンでは1万台を超える規模でのクラスタを構築することができます。
Hadoopは、海外ではすでに多くの企業のデータ処理に広く利用されています。大手企業や各ベンダーも次々とHadoopに対応した製品をリリースし、さまざまな企業間で提携しているというニュースを耳にしたことがあるかもしれません。Hadoopは研究、調査目的ではなく、すでに企業の中で普通に利用されている技術となっているのです。