#1.## mapreduce的簡單介紹
mapreduce是面向大資料並行處理的計算模型、框架和平台,它隱含了以下三層含義:
1)mapreduce是乙個基於集群的高效能平行計算平台(cluster infrastructure)。它允許用市場上普通的商用伺服器構成乙個包含數
十、數百至數千個節點的分布和平行計算集群。
2)mapreduce是乙個平行計算與執行軟體框架(software framework)。它提供了乙個龐大但設計精良的平行計算軟體框架,能自動完成計算任務的並行化處理,自動劃分計算資料和計算任務,在集群節點上自動分配和執行任務以及收集計算結果,將資料分布儲存、資料通訊、容錯處理等平行計算涉及到的很多系統底層的複雜細節交由系統負責處理,大大減少了軟體開發人員的負擔。
3)mapreduce是乙個並行程式設計模型與方法(programming model & methodology)。它借助於函式式程式語言lisp的設計思想,提供了一種簡便的並行程式設計方法,用map和reduce兩個函式程式設計實現基本的平行計算任務,提供了抽象的操作和並行程式設計介面,以簡單方便地完成大規模資料的程式設計和計算處理 。
【mapreduce工作原理】
在這裡插入描述
上圖是**裡給出的mapreduce流程圖。一切都是從最上方的user program開始的,user program鏈結了mapreduce庫,實現了最基本的map函式和reduce函式。圖中執行的順序都用數字標記了。
(1)mapreduce庫先把user program的輸入檔案劃分為m份(m為使用者定義),每乙份通常有16mb到64mb,如圖左方所示分成了split0~split4;然後使用fork將使用者程序拷貝到集群內其它機器上。
(2)user program的副本中有乙個稱為master,其餘稱為worker,master是負責排程的,為空閒worker分配作業(map作業或者reduce作業),worker的數量也是可以由使用者指定的。
(3)被分配了map作業的worker,開始讀取對應分片的輸入資料,map作業數量是由m決定的,和split一一對應;map作業從輸入資料中抽取出鍵值對,每乙個鍵值對都作為引數傳遞給map函式,map函式產生的中間鍵值對被快取在記憶體中(環形緩衝區kvbuffer)。
(4)快取的中間鍵值對會被定期寫入本地磁碟(spill),而且被分為r個區,r的大小是由使用者定義的,將來每個區會對應乙個reduce作業;這些中間鍵值對的位置會被通報給master,master負責將資訊**給reduce worker。
(5)master通知分配了reduce作業的worker它負責的分割槽在什麼位置(肯定不止乙個地方,每個map作業產生的中間鍵值對都可能對映到所有r個不同分割槽),當reduce worker把所有它負責的中間鍵值對都讀過來後,先對它們進行排序,使得相同鍵的鍵值對聚集在一起。因為不同的鍵可能會對映到同乙個分割槽也就是同乙個reduce作業,所以排序是必須的。
(6)reduce worker遍歷排序後的中間鍵值對,對於每個唯一的鍵,都將鍵與關聯的值傳遞給reduce函式,reduce函式產生的輸出會新增到這個分割槽的輸出檔案中。
(7)當所有的map和reduce作業都完成了,master喚醒正版的user program,mapreduce函式呼叫返回user program的**。
MapReduce簡單介紹
mapreduce 定義 hadoop 中的 mapreduce 是乙個使用簡單的軟體框架,基於它寫出來的應用程式能夠執行在由上千個商用機器組成的大型集群上,並以一種可靠容錯式並行處理tb級別的資料集。mapreduce hadoop mapreduce 源於 google 在2004年12月份發表...
十三 MapReduce介紹
mr是乙個分布式運算程式的程式設計框架,是使用者開發基於hadoop的資料分析應用核心框架,mr的核心功能就是將使用者編寫的業務邏輯 和自帶的預設元件整合成乙個完整的分布式運算程式,併發執行在hadoop集群上。1 優點 1.1 mr易於程式設計 它簡單的實現一些介面,就可以完成乙個分布表示式程式。...
MapReduce入門介紹
mapreduce 定義 mapreduce 是乙個分布式運算程式的程式設計框架,是使用者開發 基於 hadoop 的資料分析應用 的核心框架。mapreduce 核心功能是將使用者編寫的業務邏輯 和自帶預設元件整合成乙個完整的分布式運算程式,併發執行在乙個 hadoop 集群上。mapreduce...