HDFSは、コモディティー・ハードウェア上で実行される大規模なデータ・セットを扱う分散ファイル・システムです。 単一のApache Hadoopクラスターを数百(さらには数千)のノードにスケーリングするために使用されます。 HDFSは、 Apache Hadoopの主要コンポーネントの1つで、その他のコンポーネントには MapReduce とYARNがあります。 HDFSを Apache HBaseと混同したり、置き換えたりしないでください。Apache HBaseはHDFS上に構築される列指向の非リレーショナル・データベース管理システムであり、メモリー内の処理エンジンによってリアルタイム・データのニーズのサポートを強化することができます。
1つのHDFSインスタンスは数千台のサーバーで構成されている場合があるため、1台のサーバーも故障しないということは考えられません。 HDFSは、障害を検出し、自動的に迅速にリカバリーするように構築されています。
HDFSは対話式での使用よりもバッチ処理を想定しているため、データ・セットへのストリーミング・アクセスに適応できるように、高いデータ・スループット率を重視した設計になっています。
HDFSは、標準的にギガバイトからテラバイトのサイズのデータ・セットを扱うアプリケーションに適応しています。 HDFSは、高い集約データ帯域幅を提供し、単一クラスター内で数百のノードまでスケーリングできます。
導入を容易にするために、HDFSは複数のハードウェア・プラットフォーム間で移植できるように、さらに基礎となるさまざまなオペレーティング・システムと互換性を持つように設計されています。
例えば、米国内のすべての人の電話番号が記録されたファイルを考えてみましょう。姓がAで始まる人の電話番号はサーバー1に保存され、Bで始まる人の電話番号はサーバー2に保存される、というようになっています。
Hadoopでは、この電話帳の断片がクラスター全体わたって保存されており、プログラムによって電話帳全体を再構築するには、クラスター内のすべてのサーバーのブロックが必要になります。
HDFSでは、サーバーに障害が発生した場合の可用性を確保するために、デフォルトでこれらの小さな断片を2台の追加サーバーに複製します。 (冗長性はファイル単位または環境全体で増減できます。例えば、開発用のHadoopクラスターでは、通常、データの冗長性は必要ありません。) この冗長性には複数のメリットがあり、最も明確なメリットは可用性が向上することです。
また、この冗長性により、Hadoopクラスターは作業をより小さなチャンクに分割し、それらのジョブをクラスター内のすべてのサーバー上で実行することで、スケーラビリティーを向上させることができます。 最後に、大規模なデータ・セットを扱う際に重要となる、データの局所性というメリットも得られます。