hadoop原始碼研究 M R 1

2021-09-01 21:20:41 字數 1691 閱讀 1405

inputformat

將輸入的資料集切割成小資料集 inputsplits,

。此外 inputformat 中還提供乙個 recordreader 的實現, 將乙個 inputsplit 解析成 對提供給 map 函式。

預設:textinputformat

(針對文字檔案,按行將文字檔案切割成 inputsplits, 並用 linerecordreader 將 inputsplit 解析成 對,key 是行在檔案中的位置,value 是檔案中的一行)

outputformat

提供乙個 recordwriter 的實現,負責輸出最終結果

預設:textoutputformat

(用 linerecordwriter 將最終結果寫成純檔案檔案,每個 對一行,key 和 value 之間用 tab 分隔)

sequencefileoutputformat

outputkeyclass

輸出的最終結果中 key 的型別

預設:longwritable

outputvalueclass

輸出的最終結果中 value 的型別

預設:text

(將輸入的 原封不動的輸出為中間結果)

combinerclass

實現 combine 函式,將中間結果中的重複 key 做合併

預設:null

(不對中間結果中的重複 key 做合併)

reducerclass

reducer 類,實現 reduce 函式,對中間結果做合併,形成最終結果

預設:identityreducer

(將中間結果直接輸出為最終結果)

inputpath

設定 job 的輸入目錄, job 執行時會處理輸入目錄下的所有檔案

預設:null

outputpath

設定 job 的輸出目錄,job 的最終結果會寫入輸出目錄下

預設:null

mapoutputkeyclass

設定 map 函式輸出的中間結果中 key 的型別

預設:如果使用者沒有設定的話,使用 outputkeyclass

mapoutputvalueclass

設定 map 函式輸出的中間結果中 value 的型別

預設:如果使用者沒有設定的話,使用 outputvaluesclass

outputkeycomparator

對結果中的 key 進行排序時的使用的比較器

預設:writablecomparable

partitionerclass

對中間結果的 key 排序後,用此 partition 函式將其劃分為r份,每份由乙個 reducer 負責處理。

預設:hashpartitioner

(使用 hash 函式做 partition)

其他實現:keyfieldbasedpartitioner pipespartitioner

hadoop原始碼研究 2

job繼承自jobcontext,提供了一系列的set方法,用於設定job的一些屬性 job更新屬性,jobcontext讀屬性 同時,job還提供了一些對job進行控制的方法,如下 ll reduceprogress reduce的進度 0 1.0 liscomplete 作業是否已經完成 lis...

MR1和MR2的工作原理

1 客戶端向jobtracker請求乙個新的作業id 通過jobtracker的getnewjobid 方法獲取,見第2步 2 計算作業的輸入分片,將執行作業所需要的資源 包括jar檔案 配置檔案和計算得到的輸入分片 複製到乙個以id命名的jobtracker的檔案系統中 hdfs 見第3步 3 告...

MR 原始碼分析

mapreduce shuffle詳解 入口 執行wordcount例子。job的提交 job.waitforcompletion submit connect 連線yarn集群 submitter.submitjobinternal submitclient.submitjob yarnchild...