大資料學習之MapReduce是什麼?據說知道的都加薪了!

一種程式設計範例,可以在Hadoop叢集中的數百或數千臺伺服器上實現大規模的可擴充套件性

什麼是

MapReduce

MapReduce是Apache Hadoop的核心,正是這種程式設計範例允許在Hadoop叢集中的數百或數千臺伺服器上進行大規模的可擴充套件性。MapReduce概念對於熟悉叢集橫向擴充套件資料處理解決方案的人員來說是非常簡單的。

對於這個話題的人來說,掌握一些困難是很困難的,因為這並不是人們以前常常會遇到的。如果您是Hadoop的MapReduce工作的新手,不用擔心,我們將以一種讓您快速加速的方式進行描述。

想了解更多大資料內部專有名詞,請加大資料學習交流8群640193172,共同討論。

大資料學習之MapReduce是什麼?據說知道的都加薪了!

MapReduce的一個例子

我們來看一個簡單的例子。假設您有五個檔案,每個檔案包含兩個列(Hadoop條目中的一個鍵和一個值),代表一個城市,並在各個測量日內記錄在該城市的相應溫度。當然,這個例子很簡單,很容易理解。你可以想象一個真正的應用程式不會那麼簡單,因為它可能包含數百萬甚至數十億行,並且它們可能根本不整齊的格式化行; 事實上,無論您需要分析的資料量有多大或小,我們在這裡所涉及的關鍵原則仍然保持不變。無論哪種方式,在這個例子中,城市是關鍵,溫度是價值。

多倫多,20

Whitby,25

紐約,22

羅馬,32

多倫多,4

羅馬,33

紐約,18

在我們收集的所有資料中,我們希望找到所有資料檔案中每個城市的最高溫度(請注意,每個檔案可能具有多個相同的城市)。使用MapReduce框架,我們可以將其分解為五個對映任務,其中每個對映器在五個檔案之一上執行,對映器任務遍歷資料並返回每個城市的最高溫度。例如,上述資料的一個對映器任務產生的結果如下所示:

(多倫多,20歲)(惠特比25歲)(紐約22歲)(羅馬33歲)

讓我們假設其他四個對映器任務(在這裡未顯示的其他四個檔案上工作)產生以下中間結果:

(多倫多,18歲)(惠特比,27歲)(紐約,32歲)(羅馬37歲)(多倫多,32歲)(惠特比20歲)(紐約33歲)(羅馬38歲)(多倫多,22歲)(惠特比, 19日(紐約,20日)(羅馬31日)(多倫多31日)(惠特比22日)(紐約19日)(羅馬30日)

這些輸出流中的所有五個將被饋送到減少任務中,其結合輸入結果併為每個城市輸出單個值,產生最終結果集如下:

(多倫多,32歲)(Whitby,27歲)(紐約,33歲)(羅馬,38歲)

作為一個類比,你可以想象地圖和減少任務,就像在羅馬時期進行人口普查的方式一樣,人口普查局將派人到帝國各個城市。每個城市的每個人口普查員將負責統計那個城市的人數,然後將結果返回首都。

大資料學習之MapReduce是什麼?據說知道的都加薪了!

在那裡,每個城市的結果將減少到一個單一的數字(所有城市的總和),以確定帝國的總體人口。將人們並行對映到城市,然後將結果(減少)相結合,比以單一的人以序列方式對帝國中的每個人進行統計,效率要高得多。

大資料學習之MapReduce是什麼?據說知道的都加薪了!

術語MapReduce實際上是指Hadoop程式執行的兩個獨立和不同的任務。第一個是地圖作業,它接收一組資料並將其轉換為另一組資料,其中單個元素分解為元組(鍵/值對)。減少作業將地圖的輸出作為輸入,並將這些資料元組合併成一組較小的元組。按照MapReduce名稱的順序,reduce作業總是在地圖作業之後執行。