一種分布式的計(jì)算方式指定一個(gè)Map(映#x5C04;)函數(shù),用來把一組鍵值對(duì)映射成一組新的鍵值對(duì),指定并發(fā)的Reduce(歸約)函數(shù),用來保證所有映射的鍵值對(duì)中的每一個(gè)共享相同的鍵組
map: (K1, V1) → list(K2, V2) combine: (K2, list(V2)) → list(K2, V2) reduce: (K2, list(V2)) → list(K3, V3)
Map輸出格式和Reduce輸入格式一定是相同的
MapReduce主要是先讀取文件數(shù)據(jù),然后進(jìn)行Map處理,接著Reduce處理,最后把處理結(jié)果寫到文件中
記錄閱讀器會(huì)翻譯由輸入格式生成的記錄,記錄閱讀器用于將數(shù)據(jù)解析給記錄,并不分析記錄自身。記錄讀取器的目的是將數(shù)據(jù)解析成記錄,但不分析記錄本身。它將數(shù)據(jù)以鍵值對(duì)的形式傳輸給mapper。通常鍵是位置信息,值是構(gòu)成記錄的數(shù)據(jù)存儲(chǔ)塊.自定義記錄不在本文討論范圍之內(nèi).
在映射器中用戶提供的代碼稱為中間對(duì)。對(duì)于鍵值的具體定義是慎重的,因?yàn)槎x對(duì)于分布式任務(wù)的完成具有重要意義.鍵決定了數(shù)據(jù)分類的依據(jù),而值決定了處理器中的分析信息.本書的設(shè)計(jì)模式將會(huì)展示大量細(xì)節(jié)來解釋特定鍵值如何選擇.
ruduce任務(wù)以隨機(jī)和排序步驟開始。此步驟寫入輸出文件并下載到本地計(jì)算機(jī)。這些數(shù)據(jù)采用鍵進(jìn)行排序以把等價(jià)密鑰組合到一起。
reduce采用分組數(shù)據(jù)作為輸入。該功能傳遞鍵和此鍵相關(guān)值的迭代器??梢圆捎枚喾N方式來匯總、過濾或者合并數(shù)據(jù)。當(dāng)reduce功能完成,就會(huì)發(fā)送0個(gè)或多個(gè)鍵值對(duì)。
輸出格式會(huì)轉(zhuǎn)換最終的鍵值對(duì)并寫入文件。默認(rèn)情況下鍵和值以tab分割,各記錄以換行符分割。因此可以自定義更多輸出格式,最終數(shù)據(jù)會(huì)寫入HDFS。類似記錄讀取,自定義輸出格式不在本書范圍。
更多建議: