7.《hadoop实战》MapReduce任务的shuffle 和排序

        map的输出会经过一个名为shuffle的过程交给reduce处理, 当然也有map的结果经过sort-merge交给reduce处理的。其实在MapReduce流程中, 为了 让 reduce可以并行处理map结果, 必须对map的输出进行一定的排序和分割 , 然后再交给对应的 reduce, 而这个将map输出进行进 一步整理并交给reduce的过程就成 为了shuffle。从shuffle的过程中可以看出, 它是 Map Reduce的核心所在, shuffle过程的性能与整个MapReduce的性能直接相关。
        总体来说, shuffle过程包含在map和 reduce两端中。在map端的shuffle过程是对map的结果进行划分(partition)、 排序(sort)和分割(spill),然后将属于同一个划分的输出合并在一起(merge), 并写在磁盘上, 同时按照不同的划分将结果发送给对应的reduce (map 输出的划分与 reduce的 对应关系由JobTracker确定〉。reduce端又会将各个map送来的属于同一个划分的输出进行合并(merge), 然后对merge的结果进行排序, 最后交给reduce处理。 下面将从map和reduce两端详细介绍shuffle过程。

1.Map端

        从MapReduce的程序中可以看出, map的输出结果是由collector处理的, 所以map端 的shuffle过程包含在collect函数对map输出结果的处理过程中。 下面从具体的代码来分析 map端的shuffle过程。首先从collect函数的代码入手。 从下面的代码段可以看出 map函数的输出内存缓冲区是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值