Map:拆解的過(guò)程
Reduce:組合的過(guò)程
Worker和Master是同等級(jí)的,Worker有負(fù)責(zé)Map的榆纽,也有負(fù)責(zé)Reduce的;
Master主要負(fù)責(zé)任務(wù)的分配
執(zhí)行過(guò)程概述:
1.MapReduce庫(kù)將輸入文件拆分為M個(gè)分片。典型大小為16MB to 64 MB
2.Master分配工作缭召,將M個(gè)map任務(wù)和R個(gè)reduce任務(wù)進(jìn)行分配。選擇閑置的workers分給每一個(gè)worker一個(gè)map或reduce任務(wù)
3.被分配map任務(wù)的worker將key/value處理逆日,然后生成中間值的key/value
4.不時(shí)地將中間值key/value寫(xiě)入本地磁盤(pán)嵌巷,根據(jù)分區(qū)函數(shù)(mod R)寫(xiě)R份。并把文件位置返回給Master室抽,讓其好通知分配reduce任務(wù)
5.當(dāng)一個(gè)woker被通知分配了一個(gè)reduce任務(wù)搪哪,就使用RPC來(lái)讀本地磁盤(pán)的數(shù)據(jù),并根據(jù)key來(lái)將key/value排序
6.reduce worker遍歷排序后的中間值坪圾,然后對(duì)每個(gè)unique intermediate key計(jì)數(shù)晓折。最后生成R個(gè)output文件惑朦。(一般不需要合并,因?yàn)楹罄m(xù)步驟可能需要做數(shù)據(jù)處理之類的)
7.當(dāng)map和reduce任務(wù)都完成后漓概,master喚醒用戶程序漾月,回到用戶的代碼。
文獻(xiàn):
Dean, Jeffrey, and Sanjay Ghemawat. "MapReduce: simplified data processing on large clusters." Communications of the ACM 51.1 (2008): 107-113.