こんにちは。
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」についてお話しましょう。
ではでは。
COMMENTS