Apache Hadoop
概要
Apache Hadoopとは、大規模データを効率的に分散処理・管理するためのソフトウェア基盤(ミドルウェア)の一つ。Java言語で開発されており、開発元のApacheソフトウェア財団(ASF:Apache Software Foundation)がオープンソースソフトウェアとして公開している。ペタバイト(テラバイトの1000倍)級の大規模なデータを多数のストレージ装置に分散して保存したり、多数のコンピュータで分散して並列に解析処理を行ったりするためのソフトウェア基盤(フレームワーク)を提供する。データを解析したい開発者は行いたい処理を記述するだけでよく、データの分配や結果の統合などをHadoopが自動的に行ってくれる。
Hadoopはいくつかの要素で構成されており、各要素共通の基盤となる「Hadoop Common」、分散処理を管理する「Hadoop MapReduce」、分散ファイルシステム「HDFS」(Hadoop Distributed File System)、クラスタ上のリソース管理や処理のスケジューリングなどを行う「YARN」(Yet Another Resource Negotiator/Hadoop 2.xで導入)などに分かれる。
Hadoop MapReduceは米グーグル(Google)社が考案した分散処理の仕組みである「MapReduce」(マップリデュース)を実装したソフトウェアで、データを分割して各ノードに配信する「Map」プロセスと、各ノードの計算結果を収集し、最終的な処理結果に統合する「Reduce」プロセスを管理する。両処理とも並列化が可能で、データが増えても計算を行うノードの台数を増やすことで処理時間を短縮できる。
HDFSは分散処理のための大規模データを高い信頼性で効率的に管理するための分散型のファイルシステムである。データを一定容量のブロック単位に分割し、複数のノードに複製して保管する。ノードの故障などで一部が失われても他の複製から自動的に復元され、単一の機器で保管・管理することが事実上不可能なペタバイトクラスの大容量データを容易に扱うことができる。
Hadoop MapReduceはGoogle社のMapReduce技術を、HDFSはGFS(Google File System)をそれぞれ模して設計されている(さらに、HDFS上の分散データベースであるApache HBaseはGoogle BigQueryに相当する)が、直接の互換性や共通のコードなどはなく、概念的・機能的な類似に留まる。