Hadoop3:MapReduce源码解读之Map阶段的CombineFileInputFormat切片机制(4)

Job那块的断点代码截图省略,直接进入切片逻辑

参考:Hadoop3:MapReduce源码解读之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

java 复制代码
		// 如果不设置InputFormat,它默认用的是TextInputFormat.class
		job.setInputFormatClass(CombineTextInputFormat.class);
		//虚拟存储切片最大值设置4m
		CombineTextInputFormat.setMaxInputSplitSize(job, 4194304);

查看执行日志:
number of splits:3

所以,对应的MapTask线程数量就是3个,Reducer线程数是1个。

相关推荐
云云3212 小时前
怎么通过亚矩阵云手机实现营销?
大数据·服务器·安全·智能手机·矩阵
新加坡内哥谈技术2 小时前
苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
大数据·人工智能·语言模型
Data-Miner3 小时前
经典案例PPT | 大型水果连锁集团新零售数字化建设方案
大数据·big data
lovelin+v175030409663 小时前
安全性升级:API接口在零信任架构下的安全防护策略
大数据·数据库·人工智能·爬虫·数据分析
道一云黑板报3 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
节点。csn4 小时前
flink集群搭建 详细教程
大数据·服务器·flink
数据爬坡ing4 小时前
小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
大数据·笔记·考研·数据分析
云云3214 小时前
云手机方案全解析
大数据·服务器·安全·智能手机·矩阵
武子康6 小时前
大数据-257 离线数仓 - 数据质量监控 监控方法 Griffin架构
java·大数据·数据仓库·hive·hadoop·后端
碳学长6 小时前
2025系统架构师(一考就过):案例题之一:嵌入式架构、大数据架构、ISA
大数据·架构·系统架构