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 スケジュールタスク例チュートリアル

序文MySQL 5.1.6 以降、非常にユニークな機能であるイベント スケジューラが追加されました。...

jsはキャンバスに基づいて時計コンポーネントを実装します

圧縮アップロード画像、スクラッチカード、ポスター作成、チャートプラグインなど、フロントエンド開発にお...

MySQLのExcelへのエクスポート方法の分析

この記事では、MySQL を使用してデータを Excel にエクスポートする方法について説明します。...

ウェブページの幅を携帯電話の画面(ビューポート)の幅に自動的に適応させる実装コード

一般的な書き方は次のとおりです。 XML/HTML コードコンテンツをクリップボードにコピー<...

MySQL の重要なパフォーマンス インデックスの計算と最適化方法の概要

1 QPS 計算 (1 秒あたりのクエリ数) MyISAMエンジンベースのDBの場合 MySQL&g...

Vue2 と Vue3 でウォッチ リスナーを使用する方法

watch : データの変更を監視する(特定の値の変更イベント) vue2.x データ(){ 戻る ...

Nginx+Tomcat 負荷分散クラスタの実装例

目次導入1. 事例の概要2. 環境の展開3. Nginxホストのインストール4. Tomcatのイン...

Vue命令の動作原理と実装方法

Vue の紹介現在のビッグフロントエンドの時代は、混乱と衝突の時代です。世界は多くの派閥に分かれてお...

WeChatアプレットにナンバープレート入力機能を実装

目次序文背景大きな推測パターンを見つける構造とスタイルコンポーネントの実装パラメータキーボードの種類...

Ubuntu 18.04 に MySQL をインストールする (グラフィカル チュートリアル)

ヒント: 以下の操作はすべて root 権限で実行されます。 # MySQL がインストールされてい...

CSSでnグリッドレイアウトを実装する方法

一般的なアプリケーションシナリオ現在のアプリのインターフェースは基本的に同じであり、グリッドレイアウ...

VMware12 で Ubuntu19.04 デスクトップ版をインストールする (インストール チュートリアル)

1. 実験の説明仮想マシンに、 Ubuntu 19.04オペレーティングシステムを手動でインストー...

素晴らしい CSS ナビゲーション バーの下線効果

中国初のカッター github.com/chokcocoまず、ここに画像があります。純粋な CSS ...

CentOS での samba フォルダ共有サーバー構成の詳細な説明

1. はじめに最近、CentOS での開発には多くの不便があることがわかりました。Windows/M...