web-dev-qa-db-ja.com

Hadoop Namenodeフェイルオーバープロセスはどのように機能しますか?

Hadoopの決定的なガイドは言う-

各Namenodeが実行されますそのジョブが軽量フェイルオーバーコントローラープロセスNamenodeの障害を監視するため(単純なハートビートメカニズムを使用)、namenodeに障害が発生した場合にフェイルオーバーをトリガーします。

なぜネームノードはそれ自体の障害を検出するために何かを実行できるのですか?

誰が誰にハートビートを送るのですか?

このプロセスはどこで実行されますか?

ネームノードの障害をどのように検出しますか?

誰に移行の通知を送るのですか?

17
K246

から Apache docs

ZKFailoverController(ZKFC)は、ZooKeeperクライアントである新しいコンポーネントであり、 NameNodeの状態。 NameNodeを実行する各マシンは、[〜#〜] zkfc [〜#〜]、そして[〜#〜] zkfc [〜#〜]は以下の責任があります:

ヘルスモニタリング-the[〜#〜] zkfc [〜#〜]はそのローカルNameNodeヘルスチェックコマンドで定期的に。 NameNodeが正常な状態でタイムリーに応答する限り、[〜#〜] zkfc [〜#〜]はノードが正常であると見なします。ノードがクラッシュ、フリーズ、またはその他の方法で異常な状態になった場合、ヘルスモニターはそのノードを異常としてマークします。

ZooKeeperセッション管理-ローカルNameNodeが正常な場合、[〜#〜] zkfc [〜#〜]ZooKeeperで開いているセッションを保持します。ローカルNameNodeがアクティブな場合は、特別な "lock" znodeも保持します。このロックは、「ephemeral」ノードに対するZooKeeperのサポートを使用します。セッションが期限切れになると、ロックノードは自動的に削除されます。

ZooKeeperベースの選挙-ローカルNameNodeが正常で、[〜#〜] zkfc [〜#〜]は、他のノードが現在ロックznodeを保持していないことを確認し、それ自体がロックを取得しようとします。成功した場合は、「選挙に勝ちました」で、フェイルオーバーを実行してローカルNameNodeを作成します。 アクティブ。

これを見てください Apache PDF これはHDFS-2185JIRAの問題の一部です

スライド16

http://www.slideshare.net/cloudera/hdfs-update-lipcon-federal-big-data-Apache-hadoop-forum

enter image description here

Hadoopでの自動Namenodeフェイルオーバープロセス:

一般的なHAクラスターでは、2つの個別のマシンがNameNodeとして構成されます。どの時点でも、NameNodeの1つだけがアクティブ状態で、もう1つはスタンバイ状態です。アクティブNameNodeはクラスター内のすべてのクライアント操作を担当しますが、スタンバイは単にスレーブとして機能し、必要に応じて高速フェイルオーバーを提供するのに十分な状態を維持します。

スタンバイネームノードがアクティブネームノードとの状態の同期を維持するために、両方のノードはJournalNodes(JN)と呼ばれる個別のデーモンのグループと通信します。

名前空間の変更がアクティブノードによって実行されると、変更のレコードがこれらのJNの大部分に永続的に記録されます。スタンバイノードは、JNからこれらの編集を読み取り、独自の名前空間に適用します。

フェイルオーバーが発生した場合、スタンバイは、自身をアクティブ状態にプロモートする前に、すべての編集をJounalNodeから読み取ったことを確認します。これにより、フェイルオーバーが発生する前に、ネームスペースの状態が完全に同期されます。

NameNodesの1つだけが一度にアクティブであることがHAクラスターにとって重要です。 ZooKeeperは、スプリットブレインシナリオを回避するために使用されており、フェイルオーバーのために名前ノードの状態が分岐しないようになっています。

からのスライド8: http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen

enter image description here

要約:Name Node is Daemon&Failover controller is a Daemon。Name Node Daemonが失敗した場合、フェイルオーバーコントローラーデーモンが検出して修正アクションを実行します。マシン全体がクラッシュしても、ZooKeeperサーバーがそれを検出し、ロックが期限切れになり、他のスタンバイ名ノードがアクティブ名ノードとして選出されます。

36
Ravindra babu