Apache Hadoopとは
Apache Hadoopは、大規模データの分散処理を目的としたオープンソースの
ソフトウェアフレームワークです。
Javaで記述されており、数千台のノードと
ペタバイト級のデータを扱うことができます。
Googleの
MapReduceと
Google File System (GFS)の論文に触発され開発されました。
Apacheのトップレベルプロジェクトとして、世界中の開発者コミュニティによって開発・利用されています。
Hadoopのアーキテクチャ
Hadoopは、以下の4つの主要モジュールで構成されています。
Hadoop Common: 他のモジュールで共通利用されるライブラリ群です。
Hadoop Distributed File System (HDFS): Hadoop独自の
分散ファイルシステムです。
Hadoop YARN: Hadoopクラスタのリソース管理や、アプリケーションのスケジューリングを担当します。
Hadoop MapReduce: Hadoop上で動作する
MapReduceフレームワークの実装です。
HadoopはHDFSだけでなく、以下のファイルシステムもサポートしています。
HDFS
Amazon Simple Storage Service (S3)
OpenStack Swift
Microsoft Azure
FTP、HTTP、HTTPS経由でアクセス可能なファイルシステム
Hadoop Distributed File System (HDFS)
HDFSは、Hadoop独自の分散ファイルシステムで、大規模データを複数のノードに分散して保存します。ファイルは固定サイズのブロック(デフォルトは128MB)に分割され、複数のノードに複製されます。これにより、データの信頼性と可用性を確保します。デフォルトでは3つのレプリカが作成され、2つは同一ラック内のノードに、残り1つは異なるラック内のノードに保存されます。
HDFSはマスター/スレーブ構成で、NameNodeがマスター、DataNodeがスレーブとして機能します。NameNodeはファイルとブロックの対応関係などのメタ情報を管理し、DataNodeは実データを保持します。DataNodeの障害時には、NameNodeが自動的に検出し、別のDataNodeからデータを復元します。DataNodeは数千台規模まで拡張可能で、数10ペタバイトのデータを格納できます。
以前はNameNodeが単一障害点でしたが、Hadoop 2.2以降ではHA機能により解消されました。また、以前はオペレーティングシステムにマウントできませんでしたが、Hadoop 2.2以降ではNFSv3マウントに対応しています。
Yet Another Resource Negotiator (YARN)
YARNは、Hadoopクラスタのリソース管理とジョブスケジューリングを担当します。Hadoop 1系ではMapReduceがこれらの役割を担っていましたが、クラスタの拡張性やリソース利用効率の問題から、Hadoop 2系でYARNが導入されました。
YARNの導入により、以下の課題が解決されました。
クラスタ規模の拡大: Hadoop 1系のJobTrackerは、リソース管理、ジョブスケジューリング、タスク管理のすべてを担当していたため、負荷が高く、クラスタ規模に限界がありました。YARNでは、ResourceManagerがクラスタ全体のリソースを管理し、ApplicationMasterが各アプリケーションのスケジューリングを担うことで、負荷分散を実現しました。
リソース管理の効率化: Hadoop 1系のTaskTrackerでは、Mapタスク用とReduceタスク用に固定のスロットが用意されていましたが、YARNではコンテナ単位でリソースを割り当てることで、リソース利用効率が向上しました。
MapReduce以外の分散処理の実行: Hadoop 1系では、分散処理は
MapReduceに限定されていましたが、YARNの導入により、
Apache SparkやApache Stormなどの多様な分散処理フレームワークが利用できるようになりました。
YARNはHDFSと同様にマスター/スレーブ構成で、ResourceManagerがマスター、NodeManagerがスレーブとして機能します。各アプリケーションは独自のApplicationMasterを持ち、その中でスケジューリングを行います。NodeManagerはコンテナ単位でリソースを割り当てます。
Hadoop 2系以降では、YARN上で
MapReduceが動作します(MRv2)。従来のJobTrackerとTaskTrackerによる
MapReduceはMRv1と呼ばれます。Hadoop 2系以降ではMRv1はサポートされていません。
MapReduceは、入力データを保持するDataNodeと同じノードでMapタスクを実行するようにスケジューリングされます。
MRv2
クライアントはResourceManagerにジョブを投入し、ResourceManagerがNodeManager上でApplicationMasterを起動します。ApplicationMasterはMap/Reduceタスクの割り当てや進捗管理を担当します。
MRv1
クライアントはJobTrackerにジョブを投入し、JobTrackerが利用可能なTaskTrackerに仕事を依頼します。TaskTrackerの故障やタスクのタイムアウト時には、タスクが再スケジュールされます。JobTrackerが停止するとジョブが停止します。
主要なユーザー
Hadoopは、多くのWeb系企業で採用されています。
A9.com
Facebook
Fox Interactive Media
IBM
ImageShack
ISI
Joost
Last.fm
Powerset
ニューヨーク・タイムズ
Rackspace
スカイアーチネットワークス
Veoh
Metaweb
楽天
普及と課題
Hadoopは大規模データ処理で有効ですが、データ量が少ない場合はメリットを見出しにくいという意見もあります。また、ガートナーの調査では、Hadoopは過剰であり、I/O比が低いという意見もあります。回答者の半数強が投資を計画しておらず、2年以内の投資予定も18%にとどまっています。
参考書籍
Arun C. Murthy, Vinod Kumar Vavilapalli, Doug Eadline, Joseph Niemiec, Jeff Markham『Apache Hadoop YARN: Moving beyond
MapReduce and Batch Processing with Apache Hadoop 2』Addison-Wesley Professional、2014年。ISBN 978-0321934505
太田一樹, 岩崎正剛, 猿田浩輔, 下垣徹, 藤井達朗, 山下真一, 濱野賢一朗『Hadoop徹底入門 第2版』翔泳社、2013年。ISBN 978-4798129648
Tom White, 玉川竜司, 兼田聖士『Hadoop 第3版』
オライリーメディア、2013年。ISBN 978-4873116297
脚注
[1] 関連事項
Nutch
HBase
Aster Data Systems
クラウド・コンピューティング
[2] 外部リンク
Hadoop公式サイト
日本語訳(あしたのオープンソース研究所)
* Database Landscape Map – December 2012