HDFSとMapReduceの主な違いは、HDFSがアプリケーションデータへの高スループットアクセスを提供する分散ファイルシステムであるのに対し、MapReduceは大規模クラスタ上のビッグデータを確実に処理するソフトウェアフレームワークである点です。
ビッグデータとは、大規模なデータの集合体のことである。
量、速度、多様性という3つの性質を持っています。
Hadoopは、ビッグデータを保存・管理するためのソフトウェアです。
Javaで書かれたオープンソースのフレームワークです。
さらに、コンピュータのクラスタにまたがる大規模なデータセットの分散処理もサポートしている。
HDFSとMapReduceは、Hadoopアーキテクチャの2つのモジュールです。
HDFSとは
HDFSとは、Hadoop Distributed File Systemの略です。
Hadoopの分散ファイルシステムで、大規模なクラスタ上で確実かつ効率的に動作させるためのものです。
また、Google File System (GFS)をベースにしています。
さらに、ファイルシステムを操作するためのコマンドのリストも用意されています。
さらに、HDFSはマスター、スレーブアーキテクチャにしたがって動作します。
マスターノード(名前ノード)はファイルシステムのメタデータを管理し、スレーブノード(データノート)は実際のデータを保存します。
図1:HDFSのアーキテクチャ
また、HDFSの名前空間内のファイルは、いくつかのブロックに分割されます。
データノードはこのブロックを格納する。
そして、ネームノードがブロックをデータノードにマッピングし、データノードがファイルシステムとの読み書きの処理を行う。
また、データノードは名前ノードからの指示により、ブロックの生成や削除などのタスクを実行する。
MapReduceとは
MapReduce は、コモディティハードウェアの大規模クラスタ上でビッグデータを同時に処理するためのアプリケーションを書くためのソフトウェアフレームワークです。
このフレームワークは、クラスタノードごとに1つのマスタージョブトラッカと1つのスレーブタスクトラッカで構成されています。
マスターは資源管理、スレーブへのジョブスケジューリング、監視、失敗したタスクの再実行などを行います。
一方、スレーブタスクトラッカーはマスターから指示されたタスクを実行し、タスクの状態情報を常にマスターに送り返します。
また、MapReduceに関連するタスクは2つある。
それは、mapタスクとreduceタスクです。
Mapタスクは入力されたデータをキーと値のペアのタプルに分割し、ReduceタスクはMapタスクの出力を入力として、それらのデータタプルをより小さなタプルに連結するタスクです。
さらに、マップタスクはリデュースタスクの前に実行される。
HDFSとMapReduceの違い
定義
HDFSは、大規模クラスタ内のマシン間で大きなファイルを確実に保存する分散ファイルシステムです。
これに対し、MapReduceは、コモディティハードウェアの大規模クラスタ上で膨大なデータを並列処理するアプリケーションを、信頼性と耐障害性に優れた方法で簡単に記述するためのソフトウェアフレームワークです。
これらの定義が、HDFSとMapReduceの主な違いを説明しています。
主な機能
HDFSとMapReduceのもう一つの違いは、HDFSが拡張性の高いHadoopクラスタ間でデータへの高性能なアクセスを提供するのに対し、MapReduceはビッグデータの処理を実行する点です。
結論
簡単に説明すると、HadoopアーキテクチャにはHDFSとMapReduceという2つのモジュールがあります。
HDFSとMapReduceの主な違いは、HDFSがアプリケーションデータへの高スループットアクセスを提供する分散ファイルシステムであるのに対し、MapReduceは大規模クラスタ上のビッグデータを確実に処理するソフトウェアフレームワークである点です。