大量のデータを複数のコンピュータで分散処理するためのプラットフォームを構築するオープンソース・ソフトです。米Googleが独自開発した分散処理システムがベースになっています。米Googleが学術論文に公開した一部仕様を元にして、米Yahoo!社のDoug Cutting氏(現在は米Clouderaに在籍)が中心となって開発が始まりました。同社の検索サービスのプラットフォームにも利用されています。現在はApache Hadoopプロジェクトが開発を進めています。

 Hadoopは、分散ファイル・システムである「Hadoop Distributed File System」(HDFS)、分散処理を担う「Hadoop MapReduce」、データベース基盤となる「hBase」で構成しています。Javaのフレームワークとして実装されており、基本的にJavaでプログラミングします。「Hadoop Streaming」と呼ぶ拡張ライブラリを使うと、MapReduceの処理をC/C++、Ruby、Pythonなどでプログラミングすることができます。

 Hadoopを構成する三つのシステムのうち、中核となるのが分散処理を実行するMapReduceです。MapReduceの処理は、入力されたデータから最終的な結果を得るのに必要な情報を抽出する「Map」、抽出したデータを結合して並び替える「Shuffle」、並び替えたデータをまとめて結果を出力する「Reduce」という三つの手順で構成しています。

 Hadoopでは、データを「キー」と「バリュー」の組み合わせで管理します。テーブル単位で管理するリレーショナル・データベース(RDB)に比べて非常にシンプルな構造になっています。大量のデータを一括して変換するバッチ処理を得意とし、RDBのような特定の条件で絞り込むといった処理には向きません。分散処理という特徴もあって、スケールアウトによる性能向上が可能な点も、RDBとの大きな違いです。

■変更履歴
最後の段落で「スケールアップによる性能向上が可能」としていましたが、正しくは「スケールアウトによる性能向上が可能」です。お詫びして訂正します。本文は修正済みです。 [2010/03/16 10:50]