MapReduce的执行流程及优化

MapReduce的执行包括任务规划、数据读取、map处理、分区、溢写、合并及reduce阶段。优化集中在减少磁盘I/O、调整内存大小、设置Combiner和合理配置任务参数。此外,使用压缩技术如snappy能提升效率,而CombineFileInputFormat用于处理大量小文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MapReduce的执行流程及优化

执行流程:

  1. 程序在调用submit()方法之前,会生成一份任务分配规划。
  2. 提交数据到RecourseManager(RM),包含一份job.split 文件和job.xml文件和jar包
  3. RM根据提交的资源文件,分配任务,根据切片的个数启动相应的mapTask任务个数。
  4. mapTask任务根据程序设置的文件读取类去读文件数据,比如TextFileInputFormat,底层是调用RecorderReader组件的reader()方法去读取数据。
  5. 数据读取进入map方法,执行我们的业务逻辑,最后写出。
  6. 数据写出时,先经过分区方法,标记好数据所属的分区,再进入环形缓冲区。 默认按照keyhashCode % reduceTask 数量 = 分区号,当然也可以自定义分区。
  7. 当环形缓冲区的数据量大小达到阈值(默认80%)时,数据溢写到磁盘文件。
  8. 在溢写之前,会根据按照字典顺序对key进行快速排序。
  9. 当分区溢写到磁盘的文件数量达到默认的10个时,会进行merge操作,把10个文件合并为1个。在合并的过程中会做归并排序。
  10. 如果配置了combiner,则在归并之前执行combiner合并。
  11. 当所有的mapTask任务执行完成,则根据分区个数启动对应数量的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值