fileinputformat切片原始碼解析(input.getsplits(job))
程式先找到資料儲存的目錄
開始遍歷處理(規劃切片)目錄下的每乙個檔案
遍歷第乙個檔案ss.txt
a) 獲取檔案大小fs.sizeof(ss.txt)
b)計算切片大小
computesplitesize(math.max(minsize, math.min(maxsize, blocksize))) = blocksize = 128m
minsize是1,blocksie是128m,maxsize是long的最大值
c)預設情況下,切片大小=blocksize
(本地模式塊大小32m,yarn模式128m,老的版本64m)
d)開始切,形成第乙個切片,0-128m第乙個切片 128-256m第二個切片
(每次切片時,都要判斷切完剩下的部分是否大於塊的1.1倍,不大於1.1倍就只劃分為一塊切片,大於1.1倍則多劃分出乙個切片)
(比如129m的檔案,需要兩個快來儲存,卻只需要劃分為乙個切片)
e)將切片資訊寫到乙個切片規劃檔案中
f)整個切片的核心過程在getsplit()方法中完成
g)inputsplit只記錄了切片的元資料資訊,比如起始位置、長度以及所在的節點列表等
golang之slice切片原始碼解析
切片作為常用的資料結構體之一,切片實際上是陣列的抽象,也稱動態陣列,顧名思義,它自帶擴容的機制,因為其靈活性,相對陣列來說被運用的更加廣泛。golang的切片實現是在包runtime slice.go,切片結構體包含array指向陣列的指標,是一塊連續的記憶體空間,len代表切片的長度,cap代表切...
MR Job提交流程原始碼和切片原始碼詳解
waitforcompletion submit 1建立連線 connect 1 建立提交job的 newcluster getconfiguration 1 判斷是本地yarn還是遠端 initialize jobtrackaddr,conf 2 提交job submitter.submitjob...
azkaban web server原始碼解析
azkaban主要用於hadoop相關job任務的排程,但也可以應用任何需要排程管理的任務,可以完全代替crontab。azkaban主要分為web server 任務上傳,管理,排程 executor server 接受web server的排程指令,進行任務執行 1.資料表 projects 工...