我有这些设置
mapreduce.input.fileinputformat.split.maxsize = 471192911 (449mb)
dfs.blocksize = 134217728 (128mb)
我的每个文件都在附近 3500000000 (3.5G)
文件总长度为 2591561019810 (2.4T, 750 files)
在我开始hadoop工作之后,Map程序的总数是4820。
我知道如果hadoop使用splitsize作为449mb,那么Map程序的总数是有意义的。但是根据hadoop如何计算splitsize
Math.max(minSize, Math.min(maxSize, blockSize));
我的尺码应该是 Math(1, Math.min(449mb, 128mb)) = 128mb
.
为什么我有449mb的大小?
3条答案
按热度按时间mxg2im7a1#
要修复它,请更改minsize而不是maxsize,如下所示
i7uaboj42#
我找到了原因。我得到这些数字的原因是我使用了combinefileinputformat。源代码显示拆分大小将不断累积,直到达到最大拆分大小。
j8ag8udp3#
从fileinputformat的grepcode:
发生这种情况的唯一可能性是:
mapreduce.input.fileinputformat.split.minsize
应该是449m