MapReduce执行流程(图解+注解)

MapReduce执行流程

1.Map阶段:

1.对文件进行逻辑切片split,默认大小为hdfs块大小,每一块对应一个mapTask
2.对切片中的数据按行读取,解析返回<K,V>形式,key为每一行的偏移量,value为每一行的数据;
3.调用map方法处理数据,读取一行调用一次;
4.对map方法计算的数据进行分区partition,排序sort;
默认不分区,因为只有一个reduceTask处理数据,分区数=reduceTask数,计算规则:key的hash值对reduce取模,保证相同key一定在同一分区
5.map输出数据一同写入到数据缓冲区,达到一定的条件溢写到磁盘
6.spill溢出的文件进行combiner规约,combiner为map阶段的reduce,并不是每个mapTask都有该流程,对于combine需要慎用,例如:求平均数,如果提前combine则会导致最终的计算结果不一致
7.对所有溢出的文件(分区且有序)进行最终merge合并,成为一个大文件

2.Reduce阶段:

1.从MapTask复制拉取其对应的分区文件
2.将copy的数据进行merge合并,再对合并后的数据排序,默认按照key字典序排序
3.对排序后的数据调用reduce方法

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值