MapReduce原始碼分析 李孟 新浪部落格

2021-10-10 12:08:25 字數 1103 閱讀 6243

job.waitforcompletion(true);進入原始碼

submit()-> connect();連線,客戶端獲取服務端的**物件

connect()->new cluster(getconfiguration());

cluster(jobtrackaddr,conf)->initialize->clientprotocol rpc通訊versionid

submit() ->submitter.submitjobinternal(job.this, cluster):

checkspecs(job);檢查路徑

copyandconfigurefiles(job, submitjobdir);拷貝並且將檔案寫入到hfds

printtokens(jobid, job.getcredentials());

submitjob(jobid, submitjobdir.tostring(), job.getcredentials())提交job

int maps = writesplits(job, submitjobdir);job分割切片

writesplits()-》maps = writenewsplits(job, jobsubmitdir);-》 list splits = input.getsplits(job);//fileinputformat獲取切片

list getsplits(jobcontext job)-》long minsize = math.max(getformatminsplitsize(), getminsplitsize(job));

getminsplitsize(job)獲取mapreduce.input.fileinputformat.split.minsize的值(hadoop-mapreduce-client-core-》mapred-default.xml)

list getsplits(jobcontext job)-》long minsize 最終為1

list getsplits(jobcontext job)-》long maxsize = getmaxsplitsize(job);-》在mapred-default.xml沒有獲取到值,得long的最大值

返切片檔案列表splits

MapReduce原始碼分析心得

分布式計算追求 沒有計算發生。支撐了計算向資料移動,和計算的並行度。做的最主要的是 儲存與計算解耦,就是對所要進行切片的資料進行split切片,split map並行度 split預設是與block塊數量一致,目的是為了計算向資料移動,幾個block塊分布在幾個地方,就起幾個map,這樣就不需要讓大...

MapReduce流程講解以及原始碼分析

對於使用者來說只需要書寫map操作和reduce操作 mapreduce計算資料的時間較長 整個過程分為map和reduce,map負責處理原始資料,reduce負責處理map資料 1.map過程 block 塊 物理上的概念,預設是128m split 切片 本次map任務要處理的資料的大小 預設...

MapReduce原始碼 二

下圖是context類的繼承關係 不同層次的類的互動物件有所不同 mapcontext 關注 recordreaderreader 和 inputsplit split taskinputoutputcontext關注 recordwriteroutput statusreporter report...