仮想化道場
並列分散処理のフレームワークとなるHadoop 2.0 (NameNodeのHA機能をサポートしたHadoop 2.x)
(2013/12/25 06:00)
NameNodeのHA機能をサポートしたHadoop 2.x
さて次に、具体的な機能面の違いを見ていく。
Hadoopでは、複数のDataNodeでデータの処理を行い、このDataNodeの管理をNameNodeが行う仕組みになっている。
Hadoop 1.x系で弱点といわれていた点に、NameNodeが冗長化されていないことがある。NameNodeが1つしか存在しないため、ここにトラブルが起こってシステムがダウンすると、DataNodeの結果も無に帰してしまうのだ。
そこで多くのシステムでは、Hadoopとは別のアプリケーションやミドルウェアを利用し、NameNodeサーバーをHA化していたが、Hadoop 2.xでは、NameNode自体にHA化の機能が搭載された。
Hadoop 2.xのHA対応には、ZooKeeperが使われている。ZooKeeperは、Apache Hadoopの1プロジェクトとして開発が始まった。ZooKeeperでは、設定情報の保守、名前付け、分散同期化の提供、および各種グループサービスの提供を目的とした集中型サービスとなっている。これを利用することで、システムダウンを検知してフェイルオーバーを行う。
編集ログについては、Quorum Journal Managerにより分散してJournalNodeへ書き込む仕組みを利用することで、可用性を確保している。
【お詫びと訂正】
初出時、「NameNodeの共有ストレージとしてはNFSが利用されているが、将来的には共有ストレージを必要としない仕組みの実装も予定されている」と記載しておりましたが、すでにQuorum Journal Managerによる仕組みが実装されておりました。お詫びして訂正いたします。
Hadoopでは前述のように、複数のDataNodeでデータの処理を行い、このDataNodeの管理をNameNodeが行っている。1つのHadoopシステムには、NameNodeが1つだけ用意されている(HAなどで複数あるのは別)ため、1度に1つのデータ処理しか行えない。
これを改善し、1つのHadoopシステムを複数のテナントで利用できるようにする仕組みがHDFS Federationだ。1つのHadoopシステムに複数のNameNodeが動作するようにすることで、1つのHadoopシステムの中で、独立した形で複数のデータ処理を行えるようになった。つまりHDFS Federationは、1つの大規模なHadoopシステムを複数のテナントで利用できるような仕組みといえる。
HDFS関連では、HDFS Snapshotがサポートされた。
HDFSは、データを分割して、複数のDataNodeのストレージに保存している。これにより、データを多重化して、冗長性を確保している。
しかし、Hadoopシステム内部でデータを冗長化していると、ディザスタリカバリなどが行えないため、読み取り専用のHDFSコピーを作成するHDFS Snapshotが用意された。名前の通り、よく使われるストレージ機能のスナップショットと同じようなものだ。
HDFS Snapshotは、データを丸ままバックアップするのではなく、差分だけをバックアップするため、スナップショットのデータ量は小さくなる。さらに、スナップショットにかかる時間も短縮されている。