Hadoop におけるネームノードとセカンダリネームノードの動作メカニズムの説明

Hadoop におけるネームノードとセカンダリネームノードの動作メカニズムの説明

1) プロセス

2) FSImageと編集

NodeNode は HDFS の頭脳です。ファイルシステム全体のディレクトリ ツリーと、ディレクトリ ツリー内のすべてのファイルとディレクトリを管理します。この情報は、2 種類のファイルでファイルシステムに保存されます。1 つは、HDFS メタデータの完全なスナップショットである名前空間イメージ (ファイルシステム イメージ、File System Image、FSImage とも呼ばれます) です。NameNode が起動するたびに、最新の名前空間イメージがデフォルトでロードされます。もう 1 つは、コマンド スペース イメージの編集ログです。

FSImage ファイルは実際にはファイル システム メタデータの永続的なチェックポイントですが、すべての書き込み操作でこのファイルが更新されるわけではありません。FSImage は大きなファイルであるため、書き込み操作が頻繁に実行されると、システムの実行速度が非常に遅くなります。解決策は、NameNode が変更のみを事前にログに書き込むこと、つまり、名前空間イメージの編集ログを書き込むことです。時間が経つにつれて、編集ログはどんどん大きくなります。障害が発生すると、操作をロールバックするのに多くの時間がかかります。そのため、従来のリレーショナル データベースと同様に、FSImage と編集ログを定期的にマージする必要があります。マージ操作をNameNodeで実行すると、NameNodeがクラスターにサービスを提供する際に十分なリソースを提供できなくなる可能性があります。この問題を完全に解決するために、SecondaryNameNodeが誕生しました。

3) フェーズ1: ネームノードの起動

  • (1)ネームノードが起動され、初めてフォーマットされると、fsimageファイルとeditsファイルが作成されます。初回起動でない場合は、編集ログとイメージファイルを直接メモリに読み込みます。
  • (2)クライアントがメタデータの追加、削除、または変更を要求します。
  • (3)ネームノードは操作ログを記録し、ローリングログを更新する。
  • (4)ネームノードはメモリ内のデータを追加、削除、変更、照会します。

4) フェーズ2: セカンダリネームノードの作業

  • (1)セカンダリネームノードはネームノードにチェックポイントが必要かどうかを問い合わせる。結果を確認するには、直接 namenode に戻します。
  • (2)セカンダリネームノードがチェックポイントの実行を要求する。
  • (3)セカンダリネームノードは、書き込まれている編集ログのローリングアップデートを実行するようにネームノードに指示します。
  • (4)セカンダリネームノードはFSImageファイルを読み込み、編集ログを再生し、それをFSImageにマージし、新しいFSImageファイルを圧縮してディスクに書き込みます。
  • (5)fsimageをnamenodeにコピーします。
  • (6)Namenodeはfsimageをfsimageに名前変更します。

デフォルトでは、このプロセスは 1 時間に 1 回、または NameNode 編集ログ ファイルがデフォルトのサイズである 64 MB に達したときに実行されます。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • Hadoop ソースコード分析 3 起動とスクリプト分析
  • Hadoop ソースコード分析 4 リモートデバッグ
  • Hadoop ソースコード分析 5 HDFs アーキテクチャの原理分析
  • Hadoop ネームノード フェデレーション
  • Hadoop ソースコード分析 6 つの起動ファイル NameNode の原理の詳細な説明

<<:  MySQLの誤操作後にbinlog2sqlを使用して素早くロールバックする方法の詳細な説明

>>:  ViteでReactプロジェクトを構築する方法

推薦する

MySQL の pid とソケットの詳細な説明

目次1. pidファイルの紹介2.ソケットファイルの紹介要約:ソケット ファイル: Unix ドメイ...

Linux で FastDFS を使用してイメージ サーバーを構築する

目次サーバー計画1. システムコンポーネントをインストールする2. fastdfsをインストールする...

Linux lseek関数の使い方の詳しい説明

注:記事に誤りがある場合は、メッセージを残して指摘してください。ご協力ありがとうございます。名前名前...

HTML要素を非表示にするいくつかの方法

1. CSSを使用するコードをコピーコードは次のとおりです。スタイル="display:n...

Linux ディスクとディスク パーティションを理解するための記事

序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...

json.stringify() と json.parse() の違いと使い方

1. JSON.stringify() と JSON.parse() の違い私たちは皆、JSON.s...

リアルタイムコンピューティングフレームワークFlinkクラスタの構築と動作メカニズムについての簡単な説明

目次1. Flinkの概要1.1 基本的な紹介1.2 アプリケーションシナリオ2. 環境の展開2.1...

複数の例で HTML フォームを使用する方法

参考までに、HTMLフォームの使い方を9つの簡単な例で分析します。具体的な内容は次のとおりです。 1...

Mysqlクエリ条件で文字列の末尾にスペースがあっても一致しない問題の詳細な説明

1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...

MySQL データ挿入最適化メソッドconcurrent_insert

スレッドがテーブルに対して DELAYED ステートメントを実行するときに、そのようなハンドラーが存...

Chrome 4.0 は GreaseMonkey スクリプトをサポートします

GreaseMokey (中国語では Grease Monkey Script と呼んでいます) は...

HTML でハイパーリンク タグを使用するチュートリアル

ウェブサイトのさまざまな HTML ドキュメントはハイパーリンクを通じて相互に接続され、一貫性のある...

MYSQL インストールの解凍バージョンと発生したエラーと解決策

1 インストールMYSQL 公式サイトから対応する解凍バージョンをダウンロードし、必要なディレクトリ...

ランダムロールコールテーブルを実装するためのネイティブJavaScript

この記事では、JavaScriptのランダムロールコールテーブルの具体的なコードを参考までに紹介しま...