2017-05-18 12 views

答えて

0

ジャーナルノードの役割は、アクティブNNのみがジャーナルに書き込むことを許可することによって、ネームノードを同期させ、hdfsスプリットブレインのシナリオを避けることです。

Hadoopの2.0に先立っ

Apache Hadoop Documentationsから、名前ノードはHDFSクラスタ内の単一障害点(SPOF)でした。各クラスタには単一のNameNodeがあり、そのマシンが使用できない場合、NameNodeが再起動されるか別のマシンで起動されるまで、クラスタ全体は使用できなくなります。従来のHAクラスタでは、2つの別々のマシンがNameNodesとして設定されています。いずれの時点でも、NameNodeの1つはアクティブ状態になり、もう1つはスタンバイ状態になります。 Active NameNodeはクラスタ内のすべてのクライアント操作を担当し、スタンバイは単にスレーブとして動作し、高速フェールオーバーを提供するのに十分な状態を維持します。

スタンバイノードがアクティブノードとコーディネートした状態を維持するために、両方のノードが 'JournalNodes'(JN)と呼ばれる別々のデーモンのグループと通信します。名前空間の変更がアクティブノードによって実行されると、変更されたレコードがJournalNodesに記録されます。スタンバイノードは、JNから修正された情報を読み取ることができ、定期的に変更を監視しています。スタンバイノードは変更を確認すると、変更を独自のネームスペースに適用します。フェイルオーバーの場合、スタンバイは、JounalNodesからのすべての変更を読み込んだ後、その状態を「アクティブ状態」に変更します。これにより、フェールオーバーが発生する前に名前空間の状態が完全に同期されることが保証されます。

JournalNode machines - JournalNodesを実行するマシン。 JournalNodeデーモンは比較的軽量であるため、これらのデーモンは、NameNodes、JobTracker、またはYARN ResourceManagerなど、他のHadoopデーモンを持つマシン上に合理的に配置できます。 注:編集ログの変更は大部分のJNに書き込まれる必要があるため、少なくとも3つのJournalNodeデーモンが必要です。これにより、システムは単一のマシンの障害に耐えることができます。 3つ以上のJournalNodesを実行することもできますが、実際にシステムが許容できる障害の数を増やすには、奇数のJN(3,5,7など)を実行する必要があります。 N JournalNodesを使用して実行している場合、システムは最大で(N-1)/ 2の障害を許容し、正常に機能し続けることに注意してください。ここで

もJournalNode

https://www.edureka.co/blog/namenode-high-availability-with-quorum-journal-manager-qjm/

https://community.hortonworks.com/articles/27225/how-qjm-works-in-namenode-ha.html

についていくつかの良い外部リンクです
関連する問題