Hadoop-06 MapReduce中map和reduce阶段执行过程总结

单文件统计单词出现的次数

map阶段

  1. 框架会将输入文件/文件夹划分成很多的inputsplit,默认每个hdfs的block对应一个inputsplit。通过recordreader类,把每个inputsplit解析成一个个的<k1,v1>。默认,每一行,会被解析成一个<k1,v1>。(k1是行首偏移量,v1是当前行内容)
  2. 框架调用Mapper类中的map(...)函数,map函数形参是<k1,v1>,输出是<k2,v2>。(k2是具体的单词,v2是出现的次数)一个inputsplit对应一个map task。(每个k1v1对都要执行一次map函数)----需要自己实现,其他由框架实现
  3. 框架对map函数输出的<k2,v2>进行分区。不同分区中的<k2,v2>由不同的reduce task处理,默认只有一个分区。
  4. 框架对每个分区中的数据,按照k2进行排序分组。分组指的是相同k2的v2分成一个组。
  5. *在map节点,框架可以执行reduce归约(局部聚合),此步骤为可选项。
  6. 框架会将maptask输出的<k2,v2>写入到Linux的磁盘文件中。

map阶段结束

reduce阶段:

  1. shuffle过程(拉取数据):框架对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点
  2. 框架对reduce端接收到的相同分区的<k2.v2>数据进行合并、排序、分组。
  3. 框架调用reducer类中的reduce方法,输入<k2,v{v2.....}>,输出<k3,v3>.(k3是具体的单词,v3是单词出现的次数)。一个<k2,{v2...}>调用一次reduce函数(函数内部的业务逻辑需要实现)。----需要自己实现,其他由框架实现
  4. 框架将reduce的输出保存到HDFS中。

reduce阶段结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值