1. ホーム
  2. Web プログラミング
  3. その他全般

HDFSのNamenode高可用性メカニズムを見てみよう

2022-01-03 10:53:17

HDFSのNameNodeの高可用性

Hadoop 2.0.0以前は、クラスタにはNamenodeが1つしかなく、これが単一障害点となる。Namenodeのマシンがハングアップすると、クラスタ全体が使用不能になります。クラスタを復旧させるには、Namenodeを再起動するしかない。Hadoop 2.0 以降では、以下に説明する Namenode の高可用性メカニズムが追加されています。

Hadoop Namenode ハイ・アベイラビリティ・アーキテクチャ


Hadoop 2.0では、クラスタ内にプライマリノードのActive NamenodeとスタンバイノードのPassive Namenodeの2つのNamenodeを持ち、ホットバックアップとフェイルオーバーをサポートすることでNamenodeの単一障害点問題を解決しています。

アクティブネームノード : クラスタ内のすべてのクライアントリクエストを処理する責任を持ちます。
スタンバイ・ネームノード : アクティブなNamenodeと同じメタデータを持つスタンバイノードです。アクティブなNamenodeに障害が発生した場合に引き継がれる。

アクティブなNamenodeとスタンバイなNamenodeの間で、データはどのように同期されるのでしょうか?つまり、どのように整合性を保っているかというと、主に次のような方法です。

  • アクティブとスタンバイのNamenodeは常に同期しています。 例えば、同じメタデータを保存しているので、システムがクラッシュした時の状態にクラスタを復元することができます。また、これに基づいて自動フェイルオーバーも可能です。
  • 1つのクラスタには、同時に1つのアクティブなNamenodeノードしか存在できない そうしないと、2つのNamenodeが原因でデータがずれたり、回復できなくなったりすることがあります。この問題に対するZookeeperコミュニティの解決策はフェンシングと呼ばれ、古いアクティブなNamenodeを隔離する方法を見つけることで、外部への適切なサービスを提供できないようにし、クラスタには常にアクティブなNamenodeが1つしかないようにすることである。

Hadoop高可用性アーキテクチャを理解した上で、Hadoop Namenode高可用性がどのように実現されているかを見ていきましょう。

Namenodeの高可用性実装

ここでは、フェンシングとQuorum Journal Manager(QJM)共有ストレージによるHDFSの高可用性に焦点を当てます。

[...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...] [...]