目次:
- NameNodeの起動と操作
- データの書き込み
- HDFSからファイルを読み込むには、次のプロセスを実行する必要があります。
- 時間の経過とともに、不均一なデータ取り込みパターン(スレーブノードのデータが多く書き込まれる可能性がある)やノードの障害の組み合わせにより、データがラック全体に偏在しやすくなりますHadoopクラスタ内のスレーブノードとの間で通信を行います。
- NameNodeマスターサーバー設計
ビデオ: HDFS - Intro to Hadoop and MapReduce 2024
NameNodeはHadoop分散ファイルシステム(HDFS)のアドレス帳として機能します。どのブロックが個々のファイルを構成するのかだけでなく、これらのブロックとそれぞれの複製がどこに格納されるのかを示します。ユーザがHDFSにファイルを保存すると、ファイルはデータブロックに分割され、これらのデータブロックの3つのコピーがHadoopクラスタ全体のスレーブノードに格納されます。
これは、追跡しなければならない多くのデータブロックです。ご想像のとおり、身体がどこに埋め込まれているかを知ることで、HadoopクラスタではNameNodeが非常に重要な要素になります。 NameNodeが利用できない場合、アプリケーションはHDFSに格納されたデータにアクセスできません。
<! - 1 - >次の図を見てみると、マスターノードサーバー上で実行されているNameNodeデーモンが表示されます。データブロックおよびそれらに対応するファイルを扱うすべてのマッピング情報は、名前付きファイルに格納されます。
HDFSはジャーナリングファイルシステムです。つまり、最後の チェックポイント (編集ログをマージした最後の時刻)以降のイベントを追跡する編集ジャーナルにデータ変更が記録されます。 HDFSでは、編集ジャーナルはNameNodeに保存されているファイルに保存されます。
NameNodeの起動と操作
NameNodeの仕組みを理解するには、起動方法を見ておくと役に立ちます。 NameNodeの目的は、処理する必要があるデータブロックの数と格納先の正確な場所を追跡するためにアプリケーションに通知することであるため、すべてのブロック位置とブロックからファイルへのマッピングが必要ですRAM。
これはNameNodeが取るステップです。 NameNodeが起動後に必要とするすべての情報をロードするには、次のようになります。
<! - 3 - >-
NameNodeはファイルをメモリにロードします。
-
NameNodeはファイルをロードし、ジャーナリングされた変更を再実行して、すでにメモリにあるブロックメタデータを更新します。
-
DataNodeデーモンはNameNodeブロックレポートを送信します。
各スレーブノードには、そこに格納されているすべてのデータブロックをリストし、それぞれの健全性を記述するブロックレポートがあります。
起動プロセスが完了すると、NameNodeにはHDFSに保存されているすべてのデータが完全に表示され、Hadoopクライアントからアプリケーション要求を受け取る準備が整います。
クライアント要求に基づいてデータファイルが追加および削除されると、変更がスレーブノードのディスクボリュームに書き込まれ、ファイルへのジャーナル更新が行われ、変更がNameNodeのメモリに格納されたブロックの場所とメタデータに反映されます。
クラスタの存続期間中、DataNodeデーモンは3秒ごとにNameNodeハートビート(クイックシグナル)を送信し、それらがアクティブであることを示します。(このデフォルト値は設定可能です)6時間ごと(設定可能なデフォルト値)、DataNodeはNameNodeを送信します。ブロックレポートは、ノード上にあるファイルブロックの概要を示します。このようにして、NameNodeには常にクラスタ内の使用可能なリソースの現在のビューがあります。
データの書き込み
HDFSで新しいファイルを作成するには、次のプロセスを実行する必要があります。
-
クライアントはNameNodeに新しいファイルを作成する要求を送信します。
NameNodeは必要なブロック数を決定し、クライアントはクラスタ内にこれらの新しいファイルブロックを作成するために リース を与えられます。このリースの一環として、クライアントには作成タスクを完了するための時間制限があります。 (この時間制限は、ストレージスペースが失敗したクライアントアプリケーションによって占有されないようにします)。クライアントは、NameNodeによって割り当てられたリースを使用して、ファイルブロックの最初のコピーをスレーブノードに書き込みます。
-
NameNodeは書き込み要求を処理し、可用性とパフォーマンスのバランスをとって、ファイルブロックとその複製を書き込む必要がある場所を決定します。ファイルブロックの最初のコピーは1つのラックに書き込まれ、2番目と3番目のコピーは最初のコピーとは別のラックに書き込まれますが、同じラック内の異なるスレーブノードに書き込まれます。この構成は、同じ障害ポイントにデータブロックが存在しないことを保証しながら、ネットワークトラフィックを最小限に抑えます。
各ブロックがHDFSに書き込まれると、特別なプロセスによって残りのレプリカがNameNodeによって識別される他のスレーブノードに書き込まれます。
-
DataNodeデーモンがファイルブロックの複製が作成されたことを確認した後、クライアントアプリケーションはファイルを閉じ、NameNodeに通知して、開いたリースを閉じます。
-
データの読み込み
HDFSからファイルを読み込むには、次のプロセスを実行する必要があります。
クライアントがNameNodeにファイルを要求します。
-
NameNodeは、どのブロックが関与しているかを決定し、ブロック間の全体的近接度およびクライアントにとって最も効率的なアクセスパスに基づいて選択します。
クライアントは、NameNodeで指定されたアドレスを使用してブロックにアクセスします。
-
Hadoopクラスタのデータのバランスをとる
時間の経過とともに、不均一なデータ取り込みパターン(スレーブノードのデータが多く書き込まれる可能性がある)やノードの障害の組み合わせにより、データがラック全体に偏在しやすくなりますHadoopクラスタ内のスレーブノードとの間で通信を行います。
個々のスレーブノードに対する需要が不均衡になるため、この不均一な分布はパフォーマンスに悪影響を及ぼす可能性があります。データの少ないノードは完全には使用されません。ブロックが多いノードは過度に使用されます。 (
は、CPUやRAMではなく、ディスクのアクティビティに基づいています。)
HDFSには、過負荷のスレーブノードのブロックを使用しないスレーブノードから再分配するバランサユーティリティが含まれています。異なるスレーブノードとラック上のブロックHadoop管理者は定期的にHDFSの状態をチェックし、データが不均一に分散した場合は、バランサユーティリティを呼び出す必要があります。
NameNodeマスターサーバー設計
NameNodeデーモンを実行しているマスターサーバーは、ミッションクリティカルな性質のため、スレーブノードとは異なるハードウェア要件を必要とします。最も重要なのは、エンタープライズレベルのコンポーネントを使用して、停止の可能性を最小限に抑える必要があることです。また、HDFSに保存されているすべてのデータブロックに関するすべてのメタデータとロケーションデータをメモリにロードするのに十分なRAMが必要です。