MapReduce框架由以下組件組成:
Map函數(shù)(映射函數(shù)):將輸入數(shù)據(jù)分割成小的數(shù)據(jù)塊,并對(duì)每個(gè)數(shù)據(jù)塊應(yīng)用映射函數(shù),生成一系列鍵-值對(duì)。
Reduce函數(shù)(歸約函數(shù)):將映射函數(shù)生成的鍵-值對(duì)進(jìn)行歸約操作,得到最終的結(jié)果。
分布式文件系統(tǒng)(HDFS):用于存儲(chǔ)輸入數(shù)據(jù)和輸出結(jié)果。
JobTracker(作業(yè)跟蹤器):負(fù)責(zé)管理整個(gè)作業(yè)的執(zhí)行。它負(fù)責(zé)分配任務(wù)給可用的節(jié)點(diǎn),并跟蹤任務(wù)的執(zhí)行狀態(tài)。
TaskTracker(任務(wù)跟蹤器):負(fù)責(zé)執(zhí)行具體的任務(wù)。它接收來(lái)自JobTracker的任務(wù)分配,執(zhí)行任務(wù)并向JobTracker報(bào)告任務(wù)執(zhí)行狀態(tài)。
Master節(jié)點(diǎn):負(fù)責(zé)管理整個(gè)MapReduce作業(yè)的執(zhí)行流程,包括任務(wù)的調(diào)度和監(jiān)控。
Worker節(jié)點(diǎn):負(fù)責(zé)執(zhí)行具體的Mapper和Reducer任務(wù)。
Shuffle過(guò)程:在Map階段結(jié)束后,將Mapper的輸出結(jié)果按照鍵進(jìn)行排序,并將相同鍵的結(jié)果分發(fā)給同一個(gè)Reducer。
Combiner函數(shù):可選的中間歸約函數(shù),用于在Map階段的輸出結(jié)果進(jìn)行局部歸約,以減少數(shù)據(jù)傳輸量。
Partitioner函數(shù):將Mapper的輸出結(jié)果根據(jù)鍵的哈希值分發(fā)給對(duì)應(yīng)的Reducer。
以上組件共同構(gòu)成了MapReduce框架,實(shí)現(xiàn)了并行處理大規(guī)模數(shù)據(jù)集的能力。