19
2021
01

split 机制

spilit 是在mr 处理的map端之前产生的概念,split切片大小,默认等于block*1.1,在FileInputFormat中计算切片大小的逻辑:


blocksize:默认是 128M,可通过 dfs.blocksize 修改


minSize:默认是 1,可通过 mapreduce.input.fileinputformat.split.minsize 修改


maxsize:默认是 Long.MaxValue,可通过 mapreduce.input.fileinputformat.split.maxsize 修改


Hadoop FileInputFormat 源码:


public static final String SPLIT_MAXSIZE = "mapreduce.input.fileinputformat.split.maxsize";

public static final String SPLIT_MINSIZE = "mapreduce.input.fileinputformat.split.minsize";


protected long computeSplitSize(long blockSize, long minSize, long maxSize) {

        return Math.max(minSize, Math.min(maxSize, blockSize));

}


为什么split不是与block 一一对应的?


大量小文件场景,map进程造成资源严重浪费。


针对大小文件场景可以手动配置。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。