Hadoopは一貫しており、パーティショントレラントです。つまり、CAP定理のCPカテゴリに分類されます。
すべてのノードが名前ノードに依存しているため、Hadoopは使用できません。名前ノードが落ちると、クラスターはダウンします。
しかし、HDFSクラスターにセカンダリ名ノードがあるという事実を考慮すると、なぜhadoopを利用可能と呼ぶことができません。ネームノードがダウンしている場合、セカンダリネームノードを書き込みに使用できます。
Hadoopを使用できないようにするネームノードとセカンダリネームノードの主な違いは何ですか。
前もって感謝します。
Namenodeは、fsimageという名前のファイルにHDFSファイルシステム情報を保存します。ファイルシステムの更新(ブロックの追加/削除)はfsimageファイルを更新せず、代わりにファイルにログインするため、I/Oはランダムなファイル書き込みとは対照的に、ストリーミングのみを高速に追加します。再スターティングの際、ネームノードはfsimageを読み取り、ログファイルからのすべての変更を適用して、ファイルシステムの状態をメモリ内で最新の状態にします。このプロセスには時間がかかります。
Secondarynamenodeジョブは、ネームノードのセカンダリではなく、定期的にファイルシステムの変更ログを読み取り、fsimageファイルに適用して、最新の状態にするためのものです。これにより、次回のネームノードの起動が速くなります。
残念ながら、secondarynamenodeサービスは、その名前にもかかわらず、スタンバイのセカンダリネームノードではありません。具体的には、namenodeにHAを提供しません。これはよく説明されています こちら 。
HDFSでのNameNodeの起動操作について を参照してください。
最近のディストリビューション(現在のHadoop 2.6)では、 NFS(共有ストレージ)を使用するnamenode高可用性 および/または Quorum Journal Managerを使用するnamenode高可用性 が導入されています。
特にHadoop 2.xを使用して状況が変化しました。現在、Namenodeはフェイルオーバー機能を備えた高可用性です。
セカンダリNamenodeはオプションになりました&Standby Namenodeはフェイルオーバーに使用されました処理する。
Standby NameNodeは、すべてのファイルシステムが変更されても最新の状態を維持しますActive NameNodeになります。
HDFS 高可用性 は、2つのオプションで可能です:[〜#〜] nfs [〜#〜]およびQuorumJournal Managerが、Quorum Journal Managerが推奨されるオプションです。
Apacheをご覧ください ドキュメント
スライド8から: http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen
アクティブノードによってネームスペースの変更が実行されると、これらのJNの大部分に変更の記録が永続的に記録されます。スタンバイノードはこれらの編集をJNから読み取り、独自の名前空間に適用します。
フェイルオーバーの場合、スタンバイは、自身をアクティブ状態に昇格する前に、JounalNodesからのすべての編集を確実に読み取ります。これにより、フェイルオーバーが発生する前にネームスペースの状態が完全に同期されます。
関連するSEの質問のフェイルオーバープロセスについて見てください:
Hadoop Namenodeフェイルオーバープロセスの仕組み
HadoopのCAP理論に関するクエリについて:
Name Nodeは、すべてのメタデータがfsimageファイルとeditlogファイルに定期的に保存されるプライマリノードです。ただし、ネームノードのセカンダリノードがオンラインになるが、このノードはfsimageファイルとeditlogファイルには書き込みアクセス権がありません。すべてのセカンダリノード操作は一時フォルダに保存されます。名前ノードをオンラインに戻すと、この一時フォルダは名前ノードにコピーされ、namenodeはfsimageとeditlogファイル。
1つのNameNodeと1つのSecondaryNameNodeの代わりに2つのNameNodeが存在するHDFS高可用性でも、厳密なCAPの意味での可用性はありません。これはNameNodeコンポーネントにのみ適用され、ネットワークパーティションが両方のNameNodeからクライアントを分離している場合でも、クラスターは事実上利用できません。
NameNodeが起動すると、FSImageをロードし、編集ログを再生して最新の更新された名前空間を作成します。編集ログファイルのサイズが大きい場合、このプロセスには時間がかかり、起動時間が長くなります。セカンダリ名Nodeの仕事は、定期的に編集ログとリプレイをチェックして、更新されたFSImageを作成し、永続ストレージに保存することです。NameNode更新されたFSImageを作成するために編集ログを再生する必要がある場合、セカンダリネームノードによって作成されたFSImageを使用します。
Namenodeは、fsimageに関するメタデータと編集ログを含むマスターノードです。編集ログには、namenodeのネームスペースに最近追加/削除されたブロック情報が含まれています。 fsimageファイルには、永続ストレージ内のhadoopシステム全体のメタデータが含まれています。 fsimageで永続的な変更を行う必要があるたびに、namenodeを再起動して、namelogに編集ログ情報を書き込むことができるようにする必要がありますが、それには多くの時間がかかります。
セカンダリネームノードは、fsimageを最新の状態にするために使用されます。セカンダリネームノードは編集ログにアクセスし、fsimageを永続的に変更して、次回のネームノードの起動を高速化します。
基本的に、セカンダリネームノードはネームノードのヘルパーであり、ネームノードのハウスキーピング機能を実行します。
簡単に説明すると、Name Node as a men(working/live)and secondary Name Node as as ATM machine(storage/data storage )
したがって、NNまたは男性のみが実行するすべての機能が停止または失敗すると、SNNは役に立たなくなりますが、後でデータまたはログを回復するために使用できます