hadoop map reduce 阶段笔记

shuffle and sort
MR 框架保证:每个 reducer 的输入都是按照 key 键排过序的。
shuffle:将map输出结果送到reducer和排序的功能。
1) map:每个map task将结果输出到环形内存缓冲区,当到达一定阈值,则启动一个后台进程将缓存中的数据 1: 按照 reduce 阶段 reducer 的个数将数据分区,然后在每个分区里面的数据按照key键值排序,下一步,如果设置了 combiner 函数,则将这个combiner函数作用于上一步的结果,然后就是把数据保存到磁盘。
注意:
当这个后台进程将内存中的数据写入磁盘的时候,如果缓存已经满了,那么task会阻塞,直到spill阶段完成。
内存缓存默认是 100M,每当到达阈值则生成一个spill文件,task完成了以后,将多个spill文件合并成一个文件。这个文件是分区的,而且每个分区中的数据都是按key值排好序的。
可以让数据压缩
map 的数据是通过 http 传输给 reducer 的。

2)reduce:reducer 要执行任务,则第一步就需要获得 map 阶段输出到磁盘的数据。这个阶段叫做 copy phase。每个 reducer 默认有5个用于从远程机器获取数据的线程,并行执行。
  map task 完成以后会利用心跳机制通知 application master 。application master 知道 map 和 host 的对应关系。 每个reducer 有一个线程会周期性的询问 master map 阶段的输出数据位置,直到它已经获得所有map 阶段的数据为止。
copy phase:
1 如果 map 输出结果数据量比较小,则直接放在内存中,否则放到磁盘中。
2 当内存中的数据到达一定阈值,则将数据合并然后spill 到磁盘。(如果配置了 combiner , 那么保存到磁盘之前进行 combine)
3 copy 阶段继续执行,会开启一个后台进程将多个小文件合并并排序生成一个大文件。
4 当 map task 有一个完成了则开始 copy phase 
sorted phase:
当map阶段 文件都已经copy到reducer段然后执行 sorted phase(merge phase)。
1 将各个 map 输出的文件合并。
reduce phase:
将 sorted 阶段的结果作为 reduce 函数的输入,输出结果,如果是hdfs文件,那么第一个block将保存在本地节点的机器上
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值