Map & Reduce

こんにちは。
AMDLabの松原です。

このサイトの投稿も、なかなかいい数になってきたので、検索性をあげたいなぁと思う今日この頃。
お仕事に余裕ができたら改修していこう。

今回は前回の続きで、Hadoopについてのお話をします。

タイトルにもなっているのですが、Hadoopが大量のデータを処理する時に行なっているのがMapReduceと呼ばれる処理です。

正確にはMapとShuffleとReduceという3種類の機能に分けられるのですが、呼称はMapReduceとなっています。

ではでは、そのそれぞれの機能について説明していきましょう。

①Map
マップとは、情報の置き換えを行う処理のことです。

例えば、下のような情報があったとします。

A しいたけ
B たまねぎ
C にんじん
D 豚肉
E ほうれん草
F まいたけ
G しめじ
H 牛肉

このままでは集計なんてことは行えませんので、種類や値段など、集計したい目的に適した形に変換する必要があります。

そのため、MapReduceの最初の処理として、HDFS内(HDFSについては、また後日)の各Data Nodeのデータを、各Task Tracker(Task Trackerについても、また後日)に目的の集計結果を得られる形に置き換えさせます。

上の例であればこのように変換させます。

A きのこ
B 野菜
C 野菜
D
E 野菜
F きのこ
G きのこ
H

②Shuffle
次に、Reduceを行う準備としてShuffleという処理を行います。
行いますというより、行われますという感じですが。。。

これは、各Data Nodeで変換されたデータを、その種類毎にData Nodoに振り分け直す処理です。

A きのこ
F きのこ
G きのこ
B 野菜
C 野菜
E 野菜
D
H

③Reduce
最後にまとめられたデータを集計していくなどの処理を行うのがReduceです。

きのこ 3
野菜 3
2

大量のデータが減り(Reduce)したのが一目瞭然ですね。

これがHadoopで行う分散処理の流れです。

 

次回は、これが成り立つための土台である「HDFS」についてお話しましょう。

ではでは。

ARTICLES