美文网首页大数据开发
大数据开发:MapReduce ReduceTask工作机制

大数据开发:MapReduce ReduceTask工作机制

作者: 成都加米谷大数据 | 来源:发表于2021-07-14 18:00 被阅读0次

MapReduce的分布式并行计算,分为Map和Reduce阶段,Map阶段的工作流程机制,前面已经为大家讲过了,今天我们接着来讲Reduce阶段。在Reduce阶段,Reduce Task的具体运行细节,需要大家去结合到前面理解透彻。

ReduceTask工作机制

1、Copy阶段:ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。

2、Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。

3、Sort阶段:按照MapReduce语义,用户编写reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现对自己的处理结果进行了局部排序,因此,ReduceTask只需对所有数据进行一次归并排序即可。

4、Reduce阶段:reduce()函数将计算结果写到HDFS上。

设置ReduceTask并行度(个数)

ReduceTask的并行度同样影响整个Job的执行并发度和执行效率,但与MapTask的并发数由切片数决定不同,ReduceTask数量的决定是可以直接手动设置:

//默认值是1,手动设置为4

job.setNumReduceTasks(4);

总结:

1)ReduceTask=0,表示没有Reduce阶段,输出文件个数和Map个数一致。

2)ReduceTask默认值就是1,所以输出文件个数为一个。

3)如果数据分布不均匀,就有可能在Reduce阶段产生数据倾斜

4)ReduceTask数量并不是任意设置,还要考虑业务逻辑需求,有些情况下,需要计算全局汇总结果,就只能有1个ReduceTask。

5)具体多少个ReduceTask,需要根据集群性能而定。

6)如果分区数不是1,但是ReduceTask为1,是否执行分区过程。答案是:不执行分区过程。因为在MapTask的源码中,执行分区的前提是先判断ReduceNum个数是否大于1。不大于1肯定不执行。

关于大数据开发学习,MapReduce ReduceTask工作机制,以上就为大家做了基本的讲解了。MapReduce的计算过程,在Map阶段和Reduce阶段各有其任务需要完成,在理论学习阶段,是尤其需要大家去把理论吃透,并且在实际当中去进行相应的联系来巩固的。

相关文章

网友评论

    本文标题:大数据开发:MapReduce ReduceTask工作机制

    本文链接:https://www.haomeiwen.com/subject/ulaypltx.html