HDFSパート:Hadoopにおけるzkfcの役割と作業プロセス



Hdfs Part Role



以下に示すように、HDFSのアーキテクチャを見てみましょう。



効果:

(1)ヘルス検出:zkfcは定期的にネームノードを監視し(ネームノードのみにzkfcプロセスがあり、各ネームノードには1つあります)、ヘルスプローブコマンドを生成して、ネームノードが通常の動作状態にあるかどうかを識別します。マシン、ハートビート障害、その後zkfcはそれを不健康な状態でマークします



(2)セッション管理:namenodeが正常である場合、zkfcはzookeeperで開いているセッションを維持します。 namenodeがアクティブな場合、zkfcはzookeeperで短命のznodeも占有します。namenodeがハングすると、znodeが削除され、スタンバイnamenodeがロックを取得し、メインnamenodeにアップグレードします。ステータスをアクティブとしてマークします。マシンのネームノードを再起動すると、動物園の飼育係を再登録し、すでにZnodeがあることを確認します。自動的にスタンバイ状態になるため、ループを往復させて高い信頼性を確保しますが、現在は最大2つのネームノードの構成のみをサポートしています。

(3)マスター選出:前述のように、zookeeperで短命タイプのznodeを維持することにより、プリエンプティブロックメカニズムが実装され、どのネームノードがアクティブ状態にあるかを判別します。

作業過程:



上の図は、Hadoopの信頼性の高い作業図です。ここで、NNはNameNodeを表し、DNはDataNodeを表し、ZKはZookeeperを表します。このクラスターには、アクティブ状態とスタンバイ状態の2つのNameNodeがあることがわかります。状態では、NameNodeはZookeeperによって制御されますが、Zookeeperによって直接制御されることはありません。ミドルウェアFailoverController(つまり、ZKFCプロセス)があります。 NameNodeが配置されている各マシンにはZKFCプロセスがあり、ZKFCはいくつかのコマンドをNameNodeに送信できます。 、スイッチング命令など。同時に、ZKFCはNameNodeの監視も担当します。 NameNodeがダウンしていることが検出されると、Zookeeperに報告します。別のNameNode上のZKFCは、Zookeeperデータが同期されているため、NameNodeの情報を取得できます。この情報は、ZKから取得されます。この情報を取得した後、制御するNameNodeに命令を送信して、スタンバイ状態からアクティブ状態に切り替えます。具体的な原則は何ですか?最初は、両方のNameNodeが正常に機能します。アクティブなNameNodeは、編集をリアルタイムで保存するメディアに編集ファイルを書き込みます(下の図に示すように、緑色のデータベースイメージ)。スタンバイ状態のNameNodeは、メディア内の編集ファイルを自身のマシンにリアルタイムで同期します。 。したがって、アクティブの情報はスタンバイの情報とリアルタイムで同期されます。 FailoverControllerは、NameNodeをリアルタイムで監視し、NameNodeのステータスをZookeeperに継続的に報告します。アクティブ状態のNameNodeがダウンすると、FailoverControllerはNameNodeに接続できなくなります。連絡先が利用できなくなった後、FailoverControllerはアクティブの情報をZookeeperに報告します。別のFailoverControllerがZKからこの情報を取得し、監視対象のNameNodeに切り替え命令を送信して、スタンバイからアクティブに切り替えます。編集ファイルを保存する方法は、NFS ---ネットワークファイルシステムであり、もう1つはJournalNodeです。 DataNodeはNameServiceに接続されています。 DataNodeは、アクティブNameNodeおよびスタンバイNameNodeと通信できます。アクティブがダウンすると、DataNodeは自動的に新しいアクティブと通信します。