Apache Hadoop
Hadoop Distributed File System (HDFS)はHadoop独自の分散ファイルシステムである。HDFSでは大きなファイルを複数のブロック単位(デフォルトで128MB)に分割して、それらを複数のノードにまたがり格納する。そして、そのブロックの複製(レプリカ)を複数の異なるノードに格納することで信頼性を確保している。そのため、各ホストはRAIDを必要としない。レプリケーション数のデフォルトは3で、この場合、2つのデータを同じラック内のノードに、残り1つを異なるラック内のノードに保存する。
HDFSはマスタースレーブ型の構成で、マスターの役割を担当するのがNameNode、スレーブの役割を担当するのが複数のDataNodeである。NameNodeはHDFSに関するメタ情報(ファイルとブロックの対応関係など)を保持し、各DataNodeが実データをブロック単位で保持する。
Hadoopは、以下の4つのモジュールによって構成されている。
Hadoop Common: 他のモジュールから共通して利用されるライブラリ群。
Hadoop Distributed File System (HDFS): Hadoop独自の分散ファイルシステム。
Hadoop YARN: Hadoopクラスタのリソース管理や、Hadoop上で動作するアプリケーションのスケジューリングを担当する。
Hadoop MapReduce: Hadoop上で動作するMapReduceフレームワークの実装。
また、HadoopではHDFS以外のファイルシステムもサポートしている。2015年5月現在では、下記のファイルシステムをサポートしている。
HDFS
Amazon Simple Storage Service (S3)
OpenStack Swift
Microsoft Azure
FTP、HTTP、およびHTTPS経由でアクセス可能なファイルシステム
Apache Hadoopは大規模データの分散処理を支えるオープンソースのソフトウェアフレームワークであり、Javaで書かれている。Hadoopはアプリケーションが数千ノードおよびペタバイト級のデータを処理することを可能としている。HadoopはGoogleのMapReduceおよびGoogle File System(GFS)論文に触発されたものである。
HadoopはApacheのトップレベルプロジェクトの1つであり、世界規模の開発貢献者コミュニティによって開発され、使用されている。