Hadoop组件MR的执行流程

MapTask 执行流程 : (Map shuffle : 分区 排序 规约 )
1- MapTask 开始读取数据 , 在读取数据的时候 , 会根据文件大小的对文件数据逻辑切片 , 默认按照 128M 进行切片 , 有多少个片, 最终就会有多少个 MapTask 来执行 , 形成 k1 v1 , k1 表示行的起始偏移量 v1 表示的每一行的数据
2- 开始执行 Map 逻辑 ( 自定义 ) 处理 , 接收 k1 v1 将其转换为 k2 v2
3- 将转换后的 k2 v2 写入的环形缓冲区 ( 默认 : 100M), 随着不断的写入 , 环形缓冲区的数据会越来越多
4- 当缓冲区中数据达到 80% 的时候 , 就会触发溢写的机制 , 将数据溢写到磁盘上 , 形成一个小文件 , 在溢写的过程中 , 会对数据进行分区操作( 给每一条数据打上分区的标记 ), 同时对数据排序操作 , 如果设置了规约 (combiner) 也会在此时来运行的
5- MapTask 执行完成后 , 将缓冲池区最后一部分数据全部溢写出来 , 开始对数据进行合并操作 , 形成一个最终的结果文件即可, 在合并的过程中 , 依然会存在排序和规约的操作 , 形成的结果文件就是分区好 排好序 规好约的结果数据
reduceTask 执行流程 : (reduce shuffle : 分组 )
1- 各个 reduceTask MapTask 中拉取属于自己分区的数据 , 在拉取的过程中 , 也是先将其拉取到内存中 , 如果内存不足将其溢写到磁盘上, 最后对数据进行排序合并操作 ( 排序的目的就是为了能够更好进行分组操作 )
2- 对数据进行分组操作 , 将相同 key 的数据放置在一起 , 分好一组数据 , 就会触发执行一次 reduce 的逻辑 , k2 v2 转换为k3 v3
3- 结果进行输出 , 直到将所有的分组全部处理完成 , 整个 reduce 的操作也就全部的结束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值