Apache docs
からZKFailoverController(ZKFC)も監視し、名前ノードの状態を管理のZooKeeperクライアント新しいコンポーネントです。 名前ノードを実行するマシンの各々はまたZKFCを実行し、ZKFCは責任があること:
ヘルスモニタリングからZKFCピングそのローカル名前ノードと定期的にヘルスチェックコマンド。 NameNodeが正常な状態で適時に応答する限り、ZKFCはノードを正常とみなします。ノードがクラッシュ、フリーズ、または不健全な状態になった場合、ヘルス・モニターはそれを不健全なものとしてマークします。
ZooKeeperのセッション管理 - ローカル名前ノードが健全であるとき、ZKFCはZooKeeperの中に開いているセッションを保持しています。ローカルのNameNodeがアクティブな場合は、特殊な "ロック"のzノードも保持されます。このロックはZooKeeperのサポート「ephemeral」ノードを使用します。セッションが終了すると、ロック・ノードは自動的に削除されます。
のZooKeeperベースの選挙 - ローカル名前ノードは健康で、かつZKFCは、他のノードが現在ロックのznodeを保持していないことを認識し、それ自体がロックを取得しようとする場合。成功した場合は、 "が選挙で勝った"となり、ローカルNameNodeがアクティブになるようにフェールオーバーを実行する必要があります。
で自動名前ノードのフェイルオーバー・プロセス:
は
http://www.slideshare.net/cloudera/hdfs-update-lipcon-federal-big-data-apache-hadoop-forum
から
スライド16 HDFS-2185 JIRAの問題の一部であり、このApache PDFを見てくださいHadoop:
典型的なHAクラスタでは、2つの別々のマシンが名前ノードとして構成されています。どの時点でも、名前ノードの1つがアクティブ状態にあり、もう1つがスタンバイ状態にあります。 Active NameNodeはクラスタ内のすべてのクライアント操作を担当し、スタンバイは単にスレーブとして動作し、必要に応じて高速フェールオーバーを提供するのに十分な状態を維持します。スタンバイ名前ノードは、両方のノードがJournalNodes(JNS)と呼ばれる別のデーモンのグループと通信し、アクティブな名前ノードと同期その状態を維持するためには
。
アクティブノードによってネームスペースの変更が実行された場合、その変更のレコードが永続的にこれらのJNのログに記録されます。スタンバイノードは、これらの編集をJNから読み取り、それ自身の名前空間に適用します。
フェールオーバーが発生した場合、スタンバイはJounalNodeからのすべての編集内容を確実に読み取ってから、アクティブ状態に昇格させます。これにより、フェールオーバーが発生する前に名前空間の状態が完全に同期されます。
ネームノードのうちの1つだけがアクティブであることがHAクラスタにとって重要です。 ZooKeeperは、スプリットブレインのシナリオを回避して、名前ノードの状態がフェールオーバーによって発散しないようにするために使用されています。 http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen
:から
スライド8要約する
:名前ノードはデーモン&フェイルオーバ・コントローラはデーモンあります。名前ノードデーモンに障害が発生すると、フェールオーバーコントローラデーモンが検出して修正処置を行います。マシン全体がクラッシュしても、ZooKeeperサーバがそれを検出してロックが切れ、他のスタンバイ名ノードがアクティブ名ノードとして選択されます。
Awsome!ありがとう。私は本のテキストが適切ではないと思う、それはconvayしたかったと思う各namenode **(マシン)**は、軽いフェイルオーバーコントローラプロセスを実行し、そのジョブはそのnamenode **(デーモン)**を監視することである**失敗のために – K246
より一般的な質問への質問:Hadoop Nameノードのフェールオーバープロセスの仕組みは? –