MapReduceとHadoopの違い(1)|データ分析用語を解説

AUTHOR :   ギックス

本記事は、株式会社ギックスの運営していた分析情報サイト graffe/グラーフ より移設されました(2019/7/1)

MapReduceは「処理方法の名前」・Hadoopは「ソフトウェアの名前」

本日は「MapReduce・Hadoop」という言葉の関係について解説します。ビッグデータ処理を行う上でHadoopを基盤としてご活用されている方々も多いと思いますが、この両者の関係といわれると意外に曖昧な状態で意識されている方も多いのではないでしょうか?
話はGoogleからはじまります。Googleは自身が扱う膨大なデータを高速に分散処理するシステムを持っていたわけですが、彼らはこの分散処理システムの処理方法を論文として発表します。それが2003年10月の「The Google File System」および2004年12月の「MapReduce: Simplified Data Processing on Large Clusters」でした。これらの論文に著されている処理方法(プログラミングモデル・仕組み)が「MapReduce」と呼ばれ、当時の技術者へ驚きや礼賛とともに広まっていくことになります。また、これらの論文ではGoogle内部で稼動しているシステムのソースコードは公開されませんでした。
ここで、これらの論文に触発されたエンジニア(※1)によって、上記MapReduceの処理方法を、Google自身のシステムとは別にプログラミング(実装)したソフトウェアが誕生します。それが「巨大データの取り扱いを目的とした分散処理のフレームワーク」である「Hadoop」なのです(※2)。ちなみにGoogle自身のシステムはプログラミング言語としてC++を用いているといわれていますが、HadoopはJavaでプログラミングされています。
ここで注意なのですが、Hadoopには「巨大データの取り扱いを目的とした分散処理」に関する様々な機能があります。これらの全てがMapReduceの論文からもたらされているわけではありません。Hadoopオリジナルの技術要素も数多く盛り込まれています(例:HDFS等)。このため両者の関係を表現する場合は「MapReduceのJavaプログラム=Hadoop」という表現ではなく「MapReduce処理方法のJavaプログラム+アルファ=Hadoop」という表現方法が適当です。(このアルファもたいへん大きなウエイトを占めています)
このような経緯から、

  • MapReduceは、Googleにより提唱された「分散処理方法」
  • Hadoopは、MapReduceの処理方法を核の一つとして実装した「ソフトウェア」
  • Hadoopの中ではMapReduceを用いた処理が行われている

という事がいえるのです。
※1…当時Yahooで働いていたDoug Cuttingさんが有名です。
※2…Doug Cuttingさんは全文検索エンジンとして有名なLuceneの開発者でもあることから「HadoopはLuceneから生まれた」という表現も考えられるのですが、本記事ではMapReduce側から見た説明をさせていただいています。

関連記事:

データ分析用語:索引

SERVICE