HDFS アーキテクチャの分析

概要

  • HDFS は Hadoop file system の略称で、配布を意味します: Hadoop 分散ファイル システム
  • HDFS は Hadoop のコア コンポーネントの 1 つであり、ビッグ データ エコシステムの最下位レベルの分散ストレージ サービスとして存在します。
  • HDFS は、ビッグ データをどのように保存するかという問題を解決します。HDFS は、複数のコンピュータにまたがる、高度な耐障害性を備えたファイル ストレージ システムです。
    ここに画像の説明を挿入します

HDFS アーキテクチャ図

  • HDFS クラスターはマスター/スレーブ アーキテクチャ (マスター/スレーブ) に従います。通常は 1 つのマスター ノードと複数のスレーブ ノードが含まれます
  • 内部的には、ファイルはチャンクに保存され、各チャンクは別のスレーブ コンピューターに保存され、レプリケーション係数に基づいてバックアップが作成されます。
  • マスター ノードはファイル システムの名前空間、つまりブロックの場所やアクセス許可などのファイル ブロックに関する情報を保存および管理し、スレーブ ノードはファイルのデータ ブロックを保存します。
  • マスターとスレーブはそれぞれ独自の役割を果たし、相互に連携して外部ファイル分散ストレージ サービスを共同で提供します。もちろん内部の詳細はユーザーには透過的です
    ここに画像の説明を挿入します

全体概要

  • HDFS はマスター/スレーブ アーキテクチャに従います
  • Namenode はマスター ノードであり、名前空間のディレクトリ構造やファイル ブロックの位置情報などのファイル システムのメタデータ情報の保存と管理を担当します。
  • datanode はスレーブ ノードであり、ファイルの特定のデータ ブロックを保存する責任があります。
  • 2 つの役割はそれぞれの役割を実行し、分散ファイル ストレージ サービスを完成させるために調整します。
  • セカンダリネームノードは、プライマリ ロールの補助的なロールであり、プライマリ ロールがメタデータをマージするのに役立ちます。
    ここに画像の説明を挿入します

主な役割: ネームノード

  • Namenode は Hadoop 分散システムの中核であり、アーキテクチャにおける主要な役割を果たします。
  • ネームノードは、ネームスペースのディレクトリ ツリー構造、ファイルとブロックの位置情報、アクセス許可、その他の情報を含むファイル システムのメタデータを維持および管理します。
  • これに基づいて、namenode が HDFS にアクセスする唯一の入り口になります。
  • Namenode は、メモリとディスク ファイルを通じてメタデータを内部的に管理します。
  • ディスク上のメタデータ ファイルには、イメージ メモリ メタデータ イメージ ファイルと編集ログ (ジャーナル) 編集ログが含まれます。
  • Hadoop2 より前は、ネームノードが単一障害点でした。高可用性は Hadoop2 で導入されます。Hadoop クラスター アーキテクチャでは、クラスター内のホット スタンバイ構成で 2 つ以上のネームノードを実行できます。
    ここに画像の説明を挿入します

fsimage メモリ メタデータ イメージ ファイル

fsimage は、Hadoop 分散ファイル システム (HDFS) のメモリ メタデータ イメージ ファイルです。これには、ファイル システムの名前空間、ファイル ブロック情報、アクセス許可、属性などのメタデータの詳細な記録が含まれています。

fsimage ファイルは HDFS の重要なメタデータ ファイルであり、ファイル システムの状態とコンテンツを復元するために使用されます。HDFS が開始すると、fsimage ファイルを読み取り、その中のメタデータをメモリにロードして、ファイル システム メタデータ サービスを提供します。ファイル システムに変更が発生すると (ファイルの作成、削除、変更など)、HDFS はこれらの変更を編集ログ (編集ログ) に記録し、編集ログと編集ログに基づいてファイル システムの状態を復元できます。現在の fsimage ファイル。

fsimage ファイルは完全なメタデータ イメージであるため、ファイル システムの起動時にすぐにメモリにロードできるため、ファイル システムの起動が高速化されます。さらに、fsimage ファイルを圧縮してファイル サイズを削減したり、チェックポイントを定期的に生成してファイル システムの一貫性と信頼性を確保したりできます。

fsimage ファイルにはメタデータ情報のみが含まれており、実際のファイル データは含まれていないことに注意してください。実際のファイル データは、fsimage ファイルではなく、HDFS データ ブロックに保存されます。

要約すると、fsimage ファイルは、ファイル システムの状態とコンテンツを復元するために使用される HDFS のメモリ内メタデータ イメージ ファイルです。fsimage ファイルを読み取り、ログを編集することで、HDFS はメタデータをロードし、起動時にファイル システム サービスを提供できます。

編集ログ (ジャーナル) 編集ログ

編集ログ (編集ログとも呼ばれます) は、Hadoop 分散ファイル システム (HDFS) 内のログ ファイルであり、ファイル システムへの変更を記録するために使用されます。

HDFS では、ファイルやディレクトリの作成、削除、名前変更、ファイルのアクセス許可や属性の変更など、ファイル システムの変更が発生すると、これらの変更が編集ログに記録されます。編集ログには、実際のデータ ブロックの内容ではなく、ファイル システムの論理操作が記録されます。

編集ログは永続的かつ連続的に記録されます。これは追加書き込みログ ファイルであり、新しい変更操作はログ ファイルの末尾に追加されます。この順次書き込み方式により、HDFS は操作の順序を確保しながら、変更操作を迅速に書き込むことができます。

変更操作を編集ログに記録することで、HDFS はデータの一貫性と回復可能性を確保できます。ファイル システムが起動すると、HDFS は fsimage ファイルと最後の編集ログ ファイルをロードし、その中の操作に基づいてファイル システムの変更プロセスを再実行して、ファイル システムの状態を復元します。この処理を「ログ再生」と呼びます。

動作中、HDFS は定期的に編集ログをより大きなファイルにマージし、新しい空の編集ログ ファイルを作成して、ログ ファイルの数を減らし、効率を向上させます。

要約すると、編集ログは、ファイル システムへの変更を記録するために使用される HDFS 内のログ ファイルです。HDFS には永続性と逐次特性があり、ログの再生を通じてファイル システムの状態を復元し、データの一貫性と回復可能性を確保します。

ロールから: データノード

  • datanode は Hadoop HDFS のスレーブの役割であり、特定のデータ ブロック ストレージを担当します。
  • データノードの数によって HDFS クラスターの全体的なデータ ストレージ容量が決まり、HDFS クラスターはネームノードと連携してデータ ブロックを維持します。
    ここに画像の説明を挿入します

プライマリ ロール セカンダリ ロール: セカンダリ名ノード

  • datanode と namenode に加えて、Secondarynamenode と呼ばれるランジェリー デーモンもあります。ネームノードのセカンダリノードとして機能しますが、ネームノードを置き換えることはできません。
  • namenode が起動すると、namenode は Fsimage をマージし、ログ ファイルを編集して現在のファイル システムの名前空間を復元します。編集ログが大きすぎてロードできない場合、セカンダリ namonode は、namenode がマージするために Fsimage ファイルと編集ログ ファイルを namenode からダウンロードするのを支援します。
    ここに画像の説明を挿入します

重要な機能

マスタースレーブアーキテクチャ

  • HDFS はマスター/スレーブ アーキテクチャを採用しています。一般に、HDFS クラスターは、ネームノードと特定の数のデータノードで構成されます。
  • namonode は HDFS のマスター ノードであり、datanode は HDFS のスレーブ ノードであり、どちらの役割も独自の役割を実行し、連携して分散ファイル ストレージ サービスを調整して完了します。
    ここに画像の説明を挿入します

ブロックされたストレージメカニズム

  • HDFS 内のファイルは物理的にブロックに保存されます。ブロック サイズは構成パラメータで指定できます。パラメータは hdfs-default.xml: dfs: blocksize にあります。デフォルトのサイズは 128m です。
    ここに画像の説明を挿入します

コピー機構

  • ファイルのすべてのブロックがコピーされます。各ファイルのブロック サイズ (dfs.blocksize) と複製係数 (dfs.replication) は構成可能です。コピー係数はファイルの作成時に指定することも、後でコマンドを使用して変更することもできます。
  • dfs.replication のデフォルト値は 3 です。これは、追加の 2 つのコピーがそれ自体とともにコピーされ、合計 3 つのコピーがコピーされることを意味します。

ここに画像の説明を挿入します

名前空間

  • HDFS は、従来の階層ファイル編成構造をサポートします。ユーザーはディレクトリを作成し、これらのディレクトリにファイルを保存できます。ファイル システムの名前空間階層は、ほとんどの既存のファイル システムの階層と似ており、ユーザーはファイルを作成、削除、移動、または名前変更できます。
  • namenode はファイル システムの名前空間を維持する責任を負い、ファイル システムの名前空間または属性に対する変更はすべて namenode によって記録されます。
  • HDFS はクライアントに統合された抽象ディレクトリ ツリーを提供し、クライアントはパス (例: hdfs://namenode:port/dir-a/dir-b/dir-c/file-data) を通じてファイルにアクセスできます。

ここに画像の説明を挿入します

メタデータ管理

HDFS では、namenode が管理するメタデータには 2 つのタイプがあります

  • ファイル自身のプロパティ
    • ファイル名、権限、変更時刻、ファイルサイズ、レプリケーション係数、データブロックサイズ
  • ファイルブロックの位置マッピング情報
    • ファイル ブロックとデータノード間のマッピング情報、つまりどのブロックがどのノードに配置されているかを記録します。

ここに画像の説明を挿入します
ここに画像の説明を挿入します

ブロックストレージ

  • ファイルの各ブロックの特定のストレージ管理は、datanode ノードによって行われます。各ブロックは複数のデータノードに保存できます
    ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_49750432/article/details/132077087
おすすめ