(1)簡單地按照檔案的內容長度進行切片
(2)切片大小,預設等於block大小
(本地模式塊大小32m,yarn模式128m,老的版本64m)
(3)切片時不考慮資料集整體,而是逐個針對每乙個檔案單獨切片
比如待處理資料有兩個檔案:
file1.txt 330m
file2.txt 10m
經過fileinputformat的切片機制運算後,形成的切片資訊如下:
file1.txt.split1--0~
128 file1.txt.split2--
128~
256 file1.txt.split3--
256~
330 file2.txt.split1--0~
10m
通過分析原始碼,在fileinputformat中,計算切片大小的邏輯為 math.max(minsize, math.min(maxsize, blocksize));
切片主要由這幾個值來運算決定
mapreduce.input.fileinputformat.split.minsize=1 預設值為1
mapreduce.input.fileinputformat.split.maxsize= long.maxvalue 預設值long.maxvalue
因此,預設情況下,切片大小=blocksize。
maxsize(切片最大值)
引數如果調得比blocksize小,則會讓切片變小,而且就等於配置的這個引數的值。
minsize(切片最小值)
引數調的比blocksize大,則可以讓切片變得比blocksize還大。
// 根據檔案型別獲取切片資訊
filesplit inputsplit =
(filesplit) context.
getinputsplit()
;// 獲取切片的檔名稱
string name = inputsplit.
getpath()
.getname()
;
MapReduce切片機制及執行流程
在map階段會將讀取進來的資料進行邏輯切片進行處理。此切片與hdfs的切塊不同,hdfs的切塊是將檔案按照block塊的形式儲存起來,mr則是將檔案按照切片數進行計算 預設切片大小等於塊大小,也就是128m切一片,切片數與maptask的數量是一致的,maptask的並行度是由客戶端提交job時的切...
切片和maptask並行度決定機制
maptask指的是在mapreduce執行過程中為每乙個資料切片分配的資料運算例項任務。maptask的並行度也就指的是運算任務例項的數量,影響整個job的處理速度。資料塊 block是hdfs物理上把資料分成一塊一塊。資料切片 資料切片只是在邏輯上對輸入進行分片,並不會在磁碟上將其切分成片進行儲...
setTimeout傳參 和 執行機制
settimeout還允許新增更多的引數。它們將被傳入推遲執行的函式 函式 上面 中,settimeout共有4個引數。最後那兩個引數,將在1000毫秒之後 函式執行時,作為 函式的引數。settimeout和setinterval的執行機制是,將指定的 移出本次執行,等到下一輪event loop...