mapreduce中map個數的確定

2021-06-20 12:42:41 字數 879 閱讀 2808

在map階段讀取資料前,fileinputformat會將輸入檔案分割成split。split的個數決定了

map的個數。

影響map個數,即split個數的因素主要有:

1)hdfs塊的大小,即hdfs中dfs.block.size的值。如果有乙個輸入檔案為1024m,當塊為

256m時,會被劃分為4個split;當塊為128m時,會被劃分為8個split。

2)檔案的大小。當塊為128m時,如果輸入檔案為128m,會被劃分為1個split;當塊為256m,

會被劃分為2個split。

3)檔案的個數。fileinputformat按照檔案分割split,並且只會分割大檔案,即那些大小超過

hdfs塊的大小的檔案。如果hdfs中dfs.block.size設定為64m,而輸入的目錄中檔案有100個,則

劃分後的split個數至少為100個。

4)splitsize的大小。分片是按照splitszie的大小進行分割的,乙個split的大小在沒有設定的情況下,

預設等於hdfs block的大小。但應用程式可以通過兩個引數來對splitsize進行調節。

map個數的計算公式如下:

1,splitsize=max(minimumsize,min(maximumsize,blocksize))。如果沒有設定minimumsize和maximumsize

,splitsize的大小預設等於blocksize

2,計算公式

計算過程可以簡化為如下的公式,詳細演算法可以參照fileinputsplit類中的getsplits方法

total_split ;

for(file :輸入目錄中的每個檔案)

total_split+=file_split;

}

MapReduce中的map個數

在map階段讀取資料前,fileinputformat會將輸入檔案分割成split。split的個數決定了 map的個數。影響map個數 split個數 的主要因素有 1 檔案的大小。當塊 dfs.block.size 為128m時,如果輸入檔案為128m,會被劃分為1個split 當塊為256m,...

mapreduce中map和reduce個數

一 控制hive任務中的map數 1.通常情況下,作業會通過input的目錄產生乙個或者多個map任務。主要的決定因素有 input的檔案總個數,input的檔案大小,集群設定的檔案塊大小 目前為128m,可在hive中通過set dfs.block.size 命令檢視到,該引數不能自定義修改 2....

mapreduce中MAP數量如何控制?

一 果斷先上結論 1.如果想增加map個數,則設定mapred.map.tasks 為乙個較大的值。2.如果想減小map個數,則設定mapred.min.split.size 為乙個較大的值。3.如果輸入中有很多小檔案,依然想減少map個數,則需要將小檔案merger為大檔案,然後使用準則2。二 原...