当前位置: 首页 > news >正文

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

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

在这里插入图片描述

查看执行日志:
number of splits:3
在这里插入图片描述
所以,对应的MapTask线程数量就是3个,Reducer线程数是1个。

http://www.lryc.cn/news/368515.html

相关文章:

  • GPT-4o:OpenAI的最新篇章与深度探索
  • OpenGauss数据库-5.数据更新
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 机场航班调度程序(100分) - 三语言AC题解(Python/Java/Cpp)
  • Spark作业运行异常慢的问题定位和分析思路
  • 音视频转为文字SuperVoiceToText
  • Python基础教程(九):Lambda 函数
  • docker从入门到精通
  • 介绍工厂模式
  • 大数据领域的workload是什么意思?
  • 引入别人的安卓项目报错
  • Python Excel 指定内容修改
  • 【力扣高频题】003.无重复字符的最长子串
  • redis03 补充 事件
  • 绿联Nas docker 中 redis 老访问失败的排查
  • Linux入门学习(2)
  • Spring boot开启跨域配置
  • java面试题:hashCode的作用
  • 从零开始精通Onvif之获取设备信息
  • FiRa标准UWB MAC实现(三)——距离如何获得?
  • 基于百度翻译API的火车头PHP翻译插件,可以翻译HTML片段
  • mysql高级用法常用函数
  • 【打印100个常用Linux命令】
  • 友情提示:lazarus的tsortgrid.autofillcolumns存在BUG
  • github的个人readme文件
  • java面试题: HashMap、HashSet 和 HashTable 的区别
  • CPP初级:模板的运用!
  • 排序---基数排序
  • “新高考”下分班怎么分?
  • 二叉树的层序遍历-力扣
  • N32G45XVL-STB之移植LVGL(lvgl-8.2.0)