如何在Hadoop中控制Map&Reduce任务的数量
2017-11-18 10:29
1296 查看
一 如何控制Map任务数量
既然要讨论如何控制map任务数量,那么我们就得知道有哪些因素会影响map任务的数量。
我们知道,map任务的数量是由在提交job的时候,进行文件切片的时候,文件的切片数决定的。
在这个时候,无论你是否在配置文件设置mapreduce.job.maps参数,都将会重新设置这个值为文件的切片数。
而这个文件切片数又是由splitSize决定的。如果一个splitSize=20M,那么100M的文件就会生成5个切片。
那么splitSize又是由什么决定的呢?
intsplitSize = computeSplitSize():
具体逻辑就是:
maxSize:mapreduce.input.fileinputformat.split.maxsize,默认值是Integer.MAX_VALUE
minSize:mapreduce.input.fileinputformat.split.minsize,默认值是1
如果min(maxSize,blockSize)取其中最小的,假设结果为result
然后在max(minSize,result)取中较大者。
所以默认情况下,splitSize就是blockSize=128M
策略如下:
#如果希望调小maptask, 那么你需要调大minSize,至少保证minSize> blockSize(128M)
#如果希望调大maptask,那么你需要调小maxSize,至少保证maxSize< blockSize(128M)
#如果有很多小文件,你又想减少map任务,这时候我觉得你可以使用CombineInputFormat将多个文件组装成一个CombineInputSplit。
二 调整reduce数量
Reduce的数量是由mapreduce.job.reduces这个参数决定的,你也可以在job.
setNumReduceTasks
既然要讨论如何控制map任务数量,那么我们就得知道有哪些因素会影响map任务的数量。
我们知道,map任务的数量是由在提交job的时候,进行文件切片的时候,文件的切片数决定的。
在这个时候,无论你是否在配置文件设置mapreduce.job.maps参数,都将会重新设置这个值为文件的切片数。
而这个文件切片数又是由splitSize决定的。如果一个splitSize=20M,那么100M的文件就会生成5个切片。
那么splitSize又是由什么决定的呢?
intsplitSize = computeSplitSize():
具体逻辑就是:
maxSize:mapreduce.input.fileinputformat.split.maxsize,默认值是Integer.MAX_VALUE
minSize:mapreduce.input.fileinputformat.split.minsize,默认值是1
如果min(maxSize,blockSize)取其中最小的,假设结果为result
然后在max(minSize,result)取中较大者。
所以默认情况下,splitSize就是blockSize=128M
策略如下:
#如果希望调小maptask, 那么你需要调大minSize,至少保证minSize> blockSize(128M)
#如果希望调大maptask,那么你需要调小maxSize,至少保证maxSize< blockSize(128M)
#如果有很多小文件,你又想减少map任务,这时候我觉得你可以使用CombineInputFormat将多个文件组装成一个CombineInputSplit。
二 调整reduce数量
Reduce的数量是由mapreduce.job.reduces这个参数决定的,你也可以在job.
setNumReduceTasks
相关文章推荐
- 如何控制hadoop中map和reduce任务的数量
- Hadoop2调优(一):如何控制job的map任务和reduce任务的数量
- Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputFormat的map任务数量)
- Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputFormat的map任务数量)
- 如何确定 Hadoop map和reduce的个数--map和reduce数量之间的关系是什么?
- 如何在Hadoop中控制Map的数量
- 深度分析如何在Hadoop中控制Map的数量
- 如何在Hadoop中控制Map的数量
- 深度分析如何在Hadoop中控制Map的数量
- 深度分析如何在Hadoop中控制Map的数量
- Hadoop Job 中 Map 与 Reduce 数量控制
- hive 的HQL的map任务数量和reduce任务数量的控制调优
- 深度分析如何在Hadoop中控制Map的数量
- 深度分析如何在Hadoop中控制Map的数量
- Hadoop 笔记之Map && Reduce数量确定
- 深度分析如何在Hadoop中控制Map的数量
- 深度分析如何在Hadoop中控制Map的数量
- 深度分析如何在Hadoop中控制Map的数量
- 如何确定 Hadoop map和reduce的个数--map和reduce数量之间的关系是什么?
- (转)深度分析如何在Hadoop中控制Map的数量