Big Data筆記:Hadoop - 初識MapReduce

Map-Reduce是一種可擴展的編程模型,可簡化數據的分布式處理。 Map-Reduce包括三個主要步驟:Map,shuffle,Reduce。

Map-Reduce工作的一個簡單解釋是:它將一個大型任務“委派”給一群人,然后將每個人的努力結果相結合,以產生最終結果。

讓我們舉個例子來說明一下。你剛剛在你的辦公室聽到這個好消息,并為所有的同事們舉行派對!你決定煮面食吃飯。你的四個朋友,喜歡烹飪,也愿意加入你。準備面食的任務涉及剁蔬菜,烹飪和裝盤。

我們來剁蔬菜,這里的生蔬菜就像輸入數據,你的朋友相當于計算節點(Compute nodes),而最終切好的蔬菜類似于結果。每個朋友都分配了洋蔥,西紅柿和辣椒,以剁碎和稱重。

你也想知道你在廚房里有多少蔬菜類型。您也想在這種計算過程中切斷這些蔬菜。最后,同一類的蔬菜應該在一個大碗里,標簽上顯示其重量等信息。

Map

你的朋友使用他們的“處理能力(compute power)”來切蔬菜并稱重。 他們需要確保不混合不同類型的蔬菜。 所以每個朋友都會生成一個<key,value>映射。每一個映射對應一小碗蔬菜。

Friend X:
<tomatoes, 5 lbs>
<onions, 10 lbs>
<garlic, 2 lbs>

Friend Y:
<onions, 22 lbs>
<green peppers, 5 lbs>

Shuffle

這個階段也叫做分組。 在這里,你想按照類型蔬菜給蔬菜分組。 您將廚房的不同部分分配給每種蔬菜類型,您的朋友應該對碗進行分組,以便將產品放在一起:

North End of Kitchen:
<tomatoes, 5 lbs>
<tomatoes, 11 lbs>

West End of Kitchen:
<onions, 10 lbs>
<onions, 22 lbs>
<onions, 1.4 lbs>

East End of Kitchen:
<green peppers, 3 lbs>
<green peppers, 10 lbs>

你被朋友通過Mapping and Grouping完成的工作給震撼了!廚房看起來更加有組織。 這個任務的最后階段是衡量你實際擁有的每種蔬菜的數量。 這讓我們進入了Reduce階段。

Reduce

在這個階段,你要求你的朋友收集相同類型的物品,把它們放在一個大碗中,并用大量的碗重量標注這個大碗。 你的朋友立即開始“減少”小碗。 最后,你就有了一堆標注良好的大碗。

<tomatoes, 16 lbs>
<green peppers, 13lbs>
<onions, 33.4 lbs>

總結

您的朋友(“計算節點”)剛剛執行了Map-Reduce任務,以幫助您開始烹飪。 由于您正在協調整個練習,所以您是此Map-Reduce任務的“Master”節點。 你的每個朋友都在不同的時間擔任Mappers, Groupers ,Reducers的角色。 此示例演示了MapReduce的強大功能。

由Yanring翻譯自http://words.sdsc.edu/words-data-science/mapreduce

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 目的這篇教程從用戶的角度出發,全面地介紹了Hadoop Map/Reduce框架的各個方面。先決條件請先確認Had...
    SeanC52111閱讀 1,755評論 0 1
  • sina mapreduce是一種模式,hadoop是一種框架,是一個實現了mapreduce模式的開源的分布式并...
    橙小汁閱讀 1,676評論 0 5
  • MapReduce框架結構## MapReduce是一個用于大規模數據處理的分布式計算模型MapReduce模型主...
    Bloo_m閱讀 3,788評論 0 4
  • MapReduce是一個數據處理的編程模型。這個模型很簡單,但也不是簡單到不能夠支持一些有用的語言。Hadoop能...
    單行線的旋律閱讀 1,535評論 0 2
  • 每年的高考,都會產生兩大亮點:一是高考狀元,這個年年有,沒什么好講的。 一個就是五花八門的作弊手段,這種作弊手段道...
    哈真慈閱讀 498評論 1 1