mr map数量等于split数量.所以,split数量如何确定?
split数量=文件大小/split size
文件大小必然是确定的,问题就是split size如何确定.看源码
minSIze,maxsize都k可以自定义的
long splitSize = computeSplitSize(blockSize, minSize, maxSize);
protected long computeSplitSize(long blockSize, long minSize,
long maxSize) {
return Math.max(minSize, Math.min(maxSize, blockSize));
}
取bloksize(默认128M) 和自己设置的两个参数的最大值…
maxSize:由配置参数mapred.max.spilt.size确定,已经不考虑用户设定的maptask个数;
minSize:inputSplit的最小值,由配置参数mapred.min.spilt.size确定,默认值为1;
BlockSize:HDFS中块的大小
为啥要定义这两个参数?
方便自定义map任务个数,如有必要的话.
maxsize设超过128M没用,因为这时取小的128M,如果minsize设为256…那么是有用的 .可以减少map任务.