接触Hadoop的小伙伴应该都知道,Split(切片)的数目就是MapReduce运行时将要产生的MapTask数,那么Hadoop是如何进行切片的规则是什么呢?
Hadoop的切片功能是在FileInputFormat中实现的,里边定义了切片相关的属性配置和实现切片的getSplit()方法。以下是FileInputFormat类中与切片相关的属性及属性的get、set方法。
public abstract class FileInputFormat<K, V> extends InputFormat<K, V> {
public static final String SPLIT_MAXSIZE = //切片最大尺寸
"mapreduce.input.fileinputformat.split.maxsize";
public static final String SPLIT_MINSIZE = //切片最小尺寸
"mapreduce.input.fileinputformat.split.minsize";
private static final double SPLIT_SLOP = 1.1D; //进行切片的判定比
public static void setMinInputSplitSize(Job job, long size) {
job.getConfiguration().setLong("mapreduce.input.fileinputformat.split.minsize",size);
} //设置切片的最小尺寸