mapreducer的运行机制

map阶段

1 通过读取数据组件 InputFormat (默认 TextInputFormat) 将文件进行逻辑切片,然后启动对应切片个数的maptask任务
2 通过recordread读取数据,返回<key1,value1>的键值对
3 进入自定义的mapper类中,调用map函数,读取一行记录就会调用一次,输出处理后的键值对;

map的shuffle阶段

4 Mapper 逻辑结束之后, 将 Mapper 的每条结果通过 context.write 进行collect数据收集. 在 collect 中, 会先对其进行分区处理,默认使用 HashPartitioner
5 接下来会将数据写入到环形缓冲区,(缓冲区的作用是批量收集 Mapper 结果, 减少磁盘 IO 的影响. ),当数据过大时会出现溢写,溢写的过程中对数据进行排序和规约,然后生成一个个小文件,小文件进行合并(meger),再经过排序生成一个带分区索引的中间文件

reduce的shuffle阶段

6)reduce的缓冲区会拉取对应的分区数据,数据进入缓存区,经过溢写生成小文件,小文件进行合并,然后排序和分组,生成一个临时文件,
7)reducetask对中间文件进行处理,然后输出

mapreducer的运行机制

相关文章:

  • 2021-11-04
  • 2021-11-30
  • 2021-06-26
  • 2021-09-15
  • 2021-12-07
  • 2021-06-03
  • 2021-10-13
  • 2021-11-04
猜你喜欢
  • 2021-05-24
  • 2021-09-07
  • 2021-08-16
  • 2021-04-22
  • 2021-08-20
  • 2022-02-20
  • 2021-05-23
相关资源
相似解决方案