numSplits原始碼分析

2021-08-30 15:38:37 字數 1178 閱讀 9382

/** splits files returned by  when

* they're too big.*/

//numsplits:來自job.getnummaptasks(),即在job啟動時用org.apache.hadoop.mapred.jobconf.setnummaptasks(int n)設定的值,給m-r框架的map數量的提示

public inputsplit getsplits(jobconf job, int numsplits)

throws ioexception

//totalsize:是整個map-reduce job所有輸入的總大小

totalsize += file.getlen();

}//goalsize為「inputfile大小」/「我們在配置檔案中定義的mapred.map.tasks」值

//如果不給預設初始化0

long goalsize = totalsize / (numsplits == 0 ? 1 : numsplits);

//minsize:取的1和mapred.min.split.size中較大的乙個。(getlong()方法,如果不設定 為null 返回defaultvalue 1,如果設定後,返回設定數值對應的16進製制(long))

long minsize = math.max(job.getlong(org.apache.hadoop.mapreduce.lib.input.

fileinputformat.split_minsize, 1), minsplitsize);

// generate splits

arraylistsplits = new arraylist(numsplits);

//這個類帶有網路拓撲資訊

networktopology clustermap = new networktopology();

for (filestatus file: files) else

//如果可以切片,預設為true

if (issplitable(fs, path))

//如果相除後小於split_slop(預設的溢位值)且剩餘檔案長度不等於0

if (bytesremaining != 0)

} else

} else

}

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

思科VPP原始碼分析(dpo機制原始碼分析)

vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...

redux原始碼分析(三) 原始碼部分

下面是每個部分的一些解讀 createstore apicreatestore reducer,initialstate enhancer 曾經非常好奇這個函式的第二個引數到底是initialstate還是enhancer,因為見過兩種寫法都有的,以為是版本問題。看了原始碼才發現,都可以的。如果你不...