东莞网站建设优化东莞,东莞手机网站,网站如何引导,北京手工活外发加工网Job那块的断点代码截图省略#xff0c;直接进入切片逻辑 参考#xff1a;Hadoop3#xff1a;MapReduce源码解读之Map阶段的Job任务提交流程#xff08;1#xff09;
6、CombineFileInputFormat原理解析
类的继承关系 与TextInputFormat切片机制的区别
框架默认的TextI…Job那块的断点代码截图省略直接进入切片逻辑 参考Hadoop3MapReduce源码解读之Map阶段的Job任务提交流程1
6、CombineFileInputFormat原理解析
类的继承关系 与TextInputFormat切片机制的区别
框架默认的TextInputFormat切片机制是对任务按文件规划切片不管文件多小都会是一个单独的切片都会交给一个MapTask这样如果有大量小文件就会产生大量的MapTask处理效率极其低下。 CombineTextInputFormat用于小文件过多的场景它可以将多个小文件从逻辑上规划到一个切片中这样多个小文件就可以交给一个MapTask处理。
所以这个切片机制是针对处理大量小文件的效率比TextInputFormat更高。
切片过程说明 生成切片过程包括虚拟存储过程和切片过程二部分。 注意 当剩余数据大小超过设置的最大值且不大于最大值2倍此时将文件均分成2个虚拟存储块防止出现太小切片。 例如setMaxInputSplitSize值为4M输入文件大小为8.02M则先逻辑上分成一个4M。剩余的大小为4.02M如果按照4M逻辑划分就会出现0.02M的小的虚拟存储文件所以将剩余的4.02M文件切分成2.01M和2.01M两个文件。
案例
准备4个文件 依然用wordcount案例进行演练 指定文件路径和切片类CombineFileInputFormat // 如果不设置InputFormat它默认用的是TextInputFormat.classjob.setInputFormatClass(CombineTextInputFormat.class);//虚拟存储切片最大值设置4mCombineTextInputFormat.setMaxInputSplitSize(job, 4194304);查看执行日志 number of splits:3 所以对应的MapTask线程数量就是3个Reducer线程数是1个。