Hadoop 分散ファイルシステム (HDFS) は、Hadoop の分散ファイルシステムです。高いフォールトトレランスを備え、高スループットのデータアクセスをサポートします。HDFS は、コストを最小限に抑えながら、テラバイトまたはペタバイト規模の大量データを処理できます。大規模データの分散読み取りと分散書き込みに適しており、特に読み取りが中心のシナリオに適しています。
特徴
E-MapReduce (EMR) クラスターの HDFS には、次の利点があります:
高いフォールトトレランスとスケーラビリティ。
シェルコマンドインターフェイス。
コンポーネントを視覚的に管理するための Web UI。
Linux ライクなファイル権限管理。
データローカリティ。HDFS はストレージ領域を割り当てる際に、コンピュートノードの配置場所を考慮します。
DataNode 間でデータの分散が不均一な場合のリバランス。
ローリングリスタートとアップグレード。
アーキテクチャ
HDFS は、従来のマスター/スレーブアーキテクチャを採用しています。各 HDFS クラスターは、1 つの NameNode と複数の DataNode で構成されます。
NameNode はすべてのファイルのメタデータを管理し、クライアントとやり取りします。DataNode は、自身のノードに保存されているファイルを管理します。HDFS にアップロードされた各ファイルは、1 つ以上のデータブロックに分割されます。HDFS クラスターのデータレプリケーションポリシーに基づき、ブロックは DataNode に分散され、NameNode がその場所情報を集中管理します。
基本概念
名前 | 説明 |
NameNode | NameNode はファイルシステムの名前空間を管理し、ファイルシステムのディレクトリツリーとメタデータを保持し、各データブロックと、そのブロックが属するファイルとのマッピングを記録します。 この情報は、ファイルシステムイメージ (FsImage) と編集ログ (EditsLog) の 2 つの形式でローカルディスクに永続化されます。 |
DataNode | DataNode は、データブロックを保存する HDFS の中核コンポーネントです。 DataNode は、NameNode またはクライアントからの指示に基づいてデータブロックを保存または提供し、保存しているブロックに関する情報を定期的に NameNode に報告します。 |
クライアント | クライアントはファイルシステムにアクセスし、NameNode および DataNode と通信します。クライアントは POSIX ライクなファイルシステムインターフェイスを提供します。 |
ブロック | HDFS はファイルを 128 MB のデータブロックに分割し、異なるノードに保存できます。これにより、HDFS は個々のディスク容量を超える単一のファイルを保存できます。デフォルトでは、各ブロックには 3 つのレプリカがあります。EMR コアノードがクラウドディスクを使用している場合、各ブロックのレプリカは 2 つになります。HDFS はレプリカを複数のノードに保存します。このアプローチによりデータセキュリティが向上し、分散ジョブがローカルデータを使用して計算できるため、ネットワーク転送が削減されます。 |
Secondary NameNode | 高可用構成ではないクラスターでは、Secondary NameNode プロセスがデフォルトで開始されます。Secondary NameNode は EditsLog を消費し、定期的に FsImage と EditsLog をマージして新しい FsImage ファイルを生成することで、NameNode の負荷を軽減します。 |
高可用性 | 高可用性クラスターでは、2 つの NameNode がデフォルトで開始されます:アクティブ NameNode とスタンバイ NameNode です。これらは異なる役割を担います。 アクティブ NameNode は DataNode およびクライアントからのリクエストを処理します。スタンバイ NameNode はアクティブ NameNode と同じ最新のメタデータを維持し、アクティブ NameNode が利用できなくなった場合に引き継げる状態を保ちます。アクティブ NameNode に障害が発生すると、スタンバイ NameNode が障害を検知してアクティブの役割に切り替わり、DataNode およびクライアントからのリクエストを処理します。 |