Hadoopの最新状況
2006年、Hadoopはウェブのインデックス処理を行うために開発されました。その後さまざまな用途に利用されるようになり、それに伴いパフォーマンスの改善、セキュリティの強化、Hadoopを効率よく利用するためのエコシステムも多く誕生しました。今回は、そのうちのいくつかについて紹介します。
1) マスターノード単一障害点の解消
2) Impala - Hadoopの高速クエリエンジン
3) Hadoop運用管理ツール、Cloudera Manager
単一障害点(SPOF)の解消
Hadoopには単一障害点があるから怖くて使えない、という印象をお持ちの方はいらっしゃるのではないでしょうか?以前のバージョンのHadoopにはそのような問題がありました。(前回のコラムを参照)。単一障害点を解消するためにLinuxのクラスタソフトウェア(PacemakerやRed Hat Cluster SuiteなどのクラスタソフトウェアとDRBDなど)を使い冗長構成にして運用することも可能でしたが、運用管理が複雑になることと、大規模環境ではフェイルオーバにかかる時間がかなり必要となることから決定的なソリューションではありませんでした。現在では、Apache Hadoop自身が単一障害点を解消する仕組みを持っており、問題点は概ね解決されています(*1)。
Hadoopは基本的にマスター/スレーブ方式のソフトウェアであり、Hadoopクラスタは1つのマスターノード、複数のスレーブノードから構成されます。
従来のHDFS(Hadoop Distibuted FileSystem)においては、マスターノードであるネームノードに障害が発生すると、ネームノードが復旧するまでダウンタイムが生じました(図1)。
また、設定情報のメタデータを失ってしまうというような思わぬ障害に繋がる可能性があります。現在のHDFSでは、ネームノードをアクティブ/スタンバイの冗長構成にすることが可能となっており、ネームノードの障害発生時にアクティブ/スタンバイを自動/手動で切り替えることができます(図2)
ClouderaのHadoopディストリビューションCDH(Cloudera’s Distribution including Apache Hadoop)の最新版では、MapReduceに対する単一障害点の解消も行われています(*2)。従来マスターノードであるジョブトラッカーに障害が発生した場合、ジョブトラッカーの復旧後にジョブを再投入する必要がありました。 CDH4.2以降ではジョブトラッカーを冗長構成にすることが可能となっており、アクティブなジョブトラッカーに障害が発生した場合にはスタンバイ側のノードが引き継いで処理を行うことが可能です(*3)。
このように、Hadoopもエンタープライズ用途で活用するために必要な機能が標準で搭載されるようになってきています。
(*1)MapReduce2(YARN)を使用した場合の単一障害点の問題はまだ解決されていません。https://issues.apache.org/jira/browse/YARN-149
(*2)現時点ではアップストリームには取り込まれていません
(*3)現在の実装では、ジョブレベルの再実行をサポートしています。ジョブトラッカー障害時に実行していたジョブは、フェイルオーバ後に最初から再実行されることになります。実行中のジョブをそのまま引き継ぐ、タスクレベルリカバリはまだ実装されておりません。
http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-High-Availability-Guide/cdh4hag_topic_3_1.html