MapReduce執行及輸入和輸出過程

2021-10-05 12:19:57 字數 1428 閱讀 4861

必須實現的方法

getsplits

(1)確定 分片大小splitsize:通過computesplitsize(blocksize, minsize, maxsize)方法計算。

(2)判斷檔案大小(length)以及是否可分。不可分將整個資料塊返回;可分且不為0,按照規定分片,剩餘的作為乙個分片返回,為0,返回空列表。

(3)getsplites 方法返回的只是對需要處理的檔案

的乙個分片方案,並未對檔案進行物理上的劃分。

createrecordreader

返回乙個記錄讀取器 recordreader,必須要繼承並實現抽象類recordreader 的抽象方法 initialize()、nextkeyvalue()、 getcurrentkey()、getcurrentvalue()、getprogress()和 close(),其中 nextkeyvalue()方法實現了從分片中讀取資料並返回的工作。

自定義輸入格式

當我們自定義輸入格式型別時,需要繼承自 inputformat抽象類,實現 getsplits()和createrecordreader()方法。去實現 createrecordreader()操作時,就需要通過自定義乙個 recordreader 類,並且這個類需要繼承自 recordreader 抽象類,實 現 recordreader 抽 象 類 所 規 定 的 包 括 initialize() 、 nextkeyvalue() 、getcurrentkey()、getcurrentvalue()和 close()五個抽象介面。

所謂輸出,就是指把readuce的結果輸出到hdfs中如下圖

(1)輸出格式型別必須繼承 outputformat 抽象類,其中的三個抽象方法: getrecordwriter()、checkoutputspecs()和 getoutputcommitter()。其中 getrecordwriter()方法是返回乙個寫記錄的 writer 對 象,checkoutputspecs()是在提交任務之後用來檢查輸出的相關設定是否合法。getoutputcommitter()方法將返回乙個的 outputcommitter 物件。

(2)textoutputformat 主要是提供了getrecordwriter()操作的實現,而該操作返回乙個 linerecordwriter 類例項。

自定義輸出格式

除了預設的的 textoutputformat 輸出格式型別外,hadoop 還提供sequencefileoutputformat 和 nulloutputformat 等 輸 出 格 式 類 型 。當需要自定義輸出格式時,需要注意:自定義的輸出格式型別需要實現抽象類 outputformat,包括上面提到的三個抽象方法。

MapReduce的原理及執行過程

hadoop mapreduce是乙個軟體框架,基於該框架能夠容易地編寫應用程式,這些應用程式能夠執行在由上千個商用機器組成的大集群上,並以一種可靠的,具有容錯能力的方式並行地處理上tb級別的海量資料集。mapreduce是一種分布式計算模型,是google提出的,主要用於搜尋領域,解決海量資料的計...

MapReduce的簡單介紹及執行過程

1.mapreduce的簡單介紹 mapreduce是面向大資料並行處理的計算模型 框架和平台,它隱含了以下三層含義 1 mapreduce是乙個基於集群的高效能平行計算平台 cluster infrastructure 它允許用市場上普通的商用伺服器構成乙個包含數 十 數百至數千個節點的分布和平行...

MapReduce切片機制及執行流程

在map階段會將讀取進來的資料進行邏輯切片進行處理。此切片與hdfs的切塊不同,hdfs的切塊是將檔案按照block塊的形式儲存起來,mr則是將檔案按照切片數進行計算 預設切片大小等於塊大小,也就是128m切一片,切片數與maptask的數量是一致的,maptask的並行度是由客戶端提交job時的切...