HADOOP MAPREDUCE(9):MapReduce内核源码解析(2)ReduceTask工作机制

1ReduceTask工作机制

ReduceTask工作机制,如图4-19所示。

4-19 ReduceTask工作机制

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

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

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

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

2.设置ReduceTask并行度(个数)

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

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

job.setNumReduceTasks(4);

3.实验:测试ReduceTask多少合适

1)实验环境:1个Master节点,16个Slave节点:CPU:8GHZ,内存: 2G

2)实验结论:

 

4-3 改变ReduceTask (数据量为1GB

 

MapTask =16

ReduceTask

1

5

10

15

16

20

25

30

45

60

总时间

892

146

110

92

88

100

128

101

145

104

4.注意事项

posted @ 2020-07-19 20:15  秋华  阅读(227)  评论(0编辑  收藏  举报