MapReduce/Hadoopについて簡単に解説してみた(学習まとめ)


始めに

今さら感はありますが、今回は「MapReduce/Hadoop」について解説していきたいと思います。
MapReduceは、世界中のWebをクロールして集めた膨大なデータから検索インデックスを生成するために、
googleが編み出した分散バッチ処理の技術です。その後、MapReduceを紹介するgoogleの論文から、
Hadoopというオープンソースのクローン実装が生まれました。
Hadoopは、今や巨大ポータルサイトや大規模なSNSサービスの背後で使われています。

本文

MapReduce/Hadoopでは、特定のタスクについて一台の巨大なサーバーで集中的に処理するのでなく、複数台のコモディティ(より小型で低性能なマシン)を使って、同時に並列・分散して処理を進めていきます。(※このほうがビッグデータを処理する上で有利だそうです)。
「マスターノード」と呼ばれるタスク全体を管理してスケジューリンングするマシンと、「ワーカーノード」と呼ばれるタスクを実際に実行していくマシンに分かれてシステム(≒ネットワーク)全体を構成します。
全てのタスクは「Map」と「Reduce」の2つのジョブに分割されて、各ワーカーノード上で実行されます。
まず初めにMapが実行されて、続いてReduceが実行されるという流れです。(※厳密には、両者の間に「Shuffle」という工程があります)。
ここで、MapReduceという技術・アルゴリズムは「Key-Value」を扱うものなので、MapとReduceに入力するデータも、これらが出力するデータも共にKey-Valueということになります。
Mapが元のデータに一定の変換・加工を施し、それを次の工程であるReduceに引き継がせて、Reduceが変換・加工後のデータを元に集計したり、統計学的な処理をします。(※かなり端折って説明しました💦)(※実際の工程としては「パーティショニング」「マージ」「ソート」・・・などがあります)。

終わりに

今回は、「MapReduce/Hadoop」について非常に簡単に解説してみました。
次回は、MapReduce/Hadoopについてもっと深く、応用例も交えた形で解説してみたいです。
次回からもよろしくお願いいたします。