Just a Computer Graphics Studio & My Life

MapReduce的概念

對於Google如此成功的模範,我很好奇它所用到的技術MapReduce,所以就整理了一些資料,還挺好理解的。話說原本系上開的高等作業系統,今年附加了一個名字「雲端運算」,授課老師表示一直上舊有的作業系統知識實在很無趣,於是打算在今年之後教點有關雲端運算的知識。這讓我超級羨慕!令人驚訝的是最近在教MapReduce相關的議題。

MapReduce是Google提出的一個軟體架構,用於大規模數據集(大於1TB)的並行運算。概念「Map(映射)」和「Reduce(化簡)」,和他們的主要思想,都是從函數式程式語言借來的,還有從向量程式語言借來的特性。當前的軟體實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定並發的Reduce(化簡)函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組。

#MapReduce的執行流程
MapReduce是雲端運算的關鍵技術,將要執行的問題,拆解成Map和Reduce的方式來執行,以達到分散運算的效果。例如要搜尋哪些網頁中有「HappyMan」這個字,可以先用Map程式,來計算出所有網頁中,每一個字的位置。再使用Reduce程式,在每一個字的清單中,篩選出「HappyMan」這個字,所對應的網頁網址。
不論Google或Yahoo所採用的MapReduce執行概念相同,只是儲存的檔案系統不同(Google是GFS,而Yahoo是HDFS)。MapReduce程式的執行過程如下:

  1. 將要執行的MapReduce程式複製到Master與每一個Worker機器中。
  2. Master決定Map程式與Reduce程式,分別由哪些Worker機器執行。
  3. 將所有的資料區塊,分配到執行Map程式的Worker機器中進行Map。
  4. 將Map後的結果存入Worker機器的本地磁碟。
  5. 執行Reduce程式的Worker機器,遠端讀取每一份Map結果,進行彙整與排序,同時執行Reduce程式。
  6. 將使用者需要的運算結果輸出。

#MapReduce的示意圖

MapReduce的運作流程。

MapReduce的圖解。

MapReduce in Parallel。

MapReduce的範例。

參考:WiKi – MapReduce宅學習 – MapReduce, Hadooppigfoot’s weblog – Hadoop MapReduceiThome – 雲端運算核心技術MapReduce雲端運算survey項目 – 分散式文件系統

Advertisements

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: