MapperReduce初探系列(1)——面向編程之分佈式分析框架(模型)

正如標題說的一樣,MapperReduce是一種很厲害的面向編程的分佈式分析框架,MapperReduce使得hadoop更加有意義,雖然MapperReduce沒有Spark計算速度快,但是MapperReduce也又很多優勢,那什麼是MapperReduce,又怎麼解決海量數據的計算?


一. MapperReduce概述

(1)MapperReduce是一種分佈式計算模型,由Google提供,主要運用於搜索領域,解決海量數據的計算問題。
(2)MR的組成:MapperReduce由Mapper和Reduce兩部分組成,用戶只需要實現Mapper類然後重寫mapper()和繼承Reducer類重寫reduce(),即可實現分佈式計算,非常簡單!
(3)這兩個函數的形參是key,value對,表示函數的輸入和輸出!

二. MapperReduce原理

在初探MapperReduce之前我們先來看看下面這張圖,下圖我用紅色框出的A,B,C,D,E五個部分!

(1). MapperReduce是一個計算模型,在mapper階段,用戶只需要實現mapper()函數,其中有兩個形參,代表輸入和輸出,那麼mapper的數據來源就是hadoop的HDFS本地提供的,A部分代表HDFS文件系統中的某一個文件,這個文件在hdfs中分爲三個block分佈在放在文件系統中,3個block組合起來就是一個完整的文件,mapper通過切分一部分一部分地讀取該文件。
(2) B部分代表的是Mapper的主要應用程序,做mapper運算。
(3)C部分是一個mapper傳輸數據到reduce的中間過程想,這個過程是用來提高MapperReduce計算速度的優化。
(4)D部分代表是的Reduce應用程序做Reduce相關的計算。
(5)E部分表示的是reduce計算要輸出的目的地,這個輸出是保存到文件中的,這些文件最終落地在HDFS文件系統中。

三. 任務處理

——MapperReuce把任務分層兩個階乘的任務,就是mapper任務跟reduce任務。
(1)mapper任務:
a. 讀取輸入文件的內容,解析成Key跟Value對。對輸入文件的每一行解析成Key、Value對。每一個鍵值對調用一個mapper函數。
b. 寫自己的邏輯,對輸入進來的key、value處理,轉換成新的key跟value。
(2)reduce處理任務:
a.在reduce之前有一個shuffle的過程對mapper的輸入做合併、排序等操作。
b.寫reduce邏輯,對mapper輸入進來的key、value處理,轉換成新的key、value輸出。
c.把reduce的輸出到文件中。

四. mapper跟reduce鍵值對格式


仔細分析mapper跟reduce他們對應的接口函數,就會發現其實他們的輸入鍵值對的格式是不一樣的,reduce()的value值是一個數組來的,這個需要注意的地方的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章