MapReduce中的map個數

2022-04-10 10:18:20 字數 1318 閱讀 1868

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

map的個數。

影響map個數(split個數)的主要因素有:

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

2) 檔案的個數。fileinputformat按照檔案分割split,並且只會分割大檔案,即那些大小超過hdfs塊的大小的檔案。如果hdfs中dfs.block.size設定為128m,而輸入的目錄中檔案有100個,則劃分後的split個數至少為100個。

3) splitsize的大小。分片是按照splitszie的大小進行分割的,乙個split的大小在沒有設定的情況下,預設等於hdfs block的大小。但應用程式可以通過兩個引數來對splitsize進行調節

inputsplit=math.max(minsize, math.min(maxsize, blocksize)

其中:minsize=mapred.min.split.size

maxsize=mapred.max.split.size

我們可以在mapreduce程式的驅動部分新增如下**:

textinputformat.setmininputsplitsize(job,1024l); // 設定最小分片大小

textinputformat.setmaxinputsplitsize(job,1024×1024×10l); // 設定最大分片大小

總結如下:

當mapreduce.input.fileinputformat.split.maxsize > mapreduce.input.fileinputformat.split.minsize > dfs.blocksize的情況下,此時的splitsize 將由mapreduce.input.fileinputformat.split.minsize引數決定

當mapreduce.input.fileinputformat.split.maxsize > dfs.blocksize > mapreduce.input.fileinputformat.split.minsize的情況下,此時的splitsize 將由dfs.blocksize配置決定

當dfs.blocksize > mapreduce.input.fileinputformat.split.maxsize > mapreduce.input.fileinputformat.split.minsize的情況下,此時的splitsize將由mapreduce.input.fileinputformat.split.maxsize引數決定。

】。

mapreduce中map和reduce個數

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

mapreduce中map個數的確定

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

mapreduce中MAP數量如何控制?

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