Hadoop 分散ファイルシステム (HDFS) は、Hadoop の耐障害性に優れた分散ファイルシステムです。テラバイトまたはペタバイト規模の巨大なデータセットへの高スループットなアクセスをコスト効率よくサポートします。HDFS は、大規模なデータセットに対する分散読み書き操作、特に読み取り中心のシナリオに最適です。
特長
E-MapReduce (EMR) クラスターの HDFS には、以下の利点があります:
-
高い耐障害性とスケーラビリティ。
-
直接対話するためのシェルコマンドインターフェイス。
-
管理を容易にする Web ベースの可視化コンポーネント。
-
Linux ライクなファイル権限管理。
-
ローカリティ アウェアネス。HDFS は、ストレージ領域を割り当てる際に、コンピュートノードの場所を考慮します。
-
DataNode 間でデータが不均等に分散された場合のリバランス。
-
ローリングリスタートとアップグレード。
アーキテクチャ
HDFS は、典型的なマスター/スレーブアーキテクチャを採用しています。HDFS クラスターは、1 つの NameNode と複数の DataNode で構成されます。
NameNode はファイルシステムのメタデータを管理し、クライアントとやり取りします。DataNode は、自身に格納されているデータブロックを管理します。ファイルが HDFS にアップロードされると、1 つ以上のブロックに分割されます。これらのブロックは、クラスターのデータバックアップポリシーに基づき、異なる DataNode に分散されます。NameNode は、これらのブロックの場所情報を一元的に管理します。
用語
|
名前 |
説明 |
|
NameNode |
ファイルシステムの名前空間を管理し、ファイルシステムのディレクトリツリーとメタデータを維持し、書き込まれた各ブロックと親ファイルとのマッピングを記録します。 この情報は、名前空間イメージ (FSImage) と編集ログ (EditsLog) としてローカルディスクに永続化されます。 |
|
DataNode |
実際のファイルデータを格納します。 DataNode は、NameNode またはクライアントからの指示に基づき、ブロックを格納または提供し、定期的にそのブロック情報を NameNode に報告します。 |
|
クライアント |
NameNode および DataNode と通信することでファイルシステムにアクセスします。クライアントは、POSIX ライクなファイルシステムインターフェイスを提供します。 |
|
ブロック |
HDFS は、ファイルを 128 MB のブロックに分割して格納します。これらのブロックは異なるノードに格納できるため、HDFS は単一のディスク容量を超えるサイズの単一ファイルを格納できます。デフォルトでは、各ブロックには 3 つのレプリカがあります。EMR のコアノードがクラウドディスクを使用する場合、2 つのレプリカが使用されます。レプリカはブロックレベルで複数のノードに格納されるため、データセキュリティが向上し、分散ジョブがローカルデータを計算に活用できるようになり、ネットワークトラフィックが削減されます。 |
|
セカンダリ NameNode |
高可用性ではないクラスターでは、デフォルトでセカンダリ NameNode プロセスが実行されます。これは EditsLog を消費し、定期的に FsImage と EditsLog をマージして新しい FsImage ファイルを生成し、NameNode の負荷を軽減します。 |
|
高可用性 |
高可用性 (HA) クラスターでは、デフォルトで 2 つの NameNode (1 つはアクティブ、もう 1 つはスタンバイ) が実行されます。 アクティブ NameNode は、DataNode とクライアントからのリクエストを処理します。スタンバイ NameNode は、同じ最新のメタデータを維持し、アクティブ NameNode に障害が発生した場合に引き継ぐ準備ができています。障害が発生すると、スタンバイ NameNode は障害を検出し、アクティブに切り替わって、DataNode とクライアントからのリクエストを引き続き処理します。 |