大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——ReduceTask工作机制

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1、ReduceTask工作机制

ReduceTask工作机制如下图所示。

Untitled

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实验结论

Untitled

4、注意事项

  • ReduceTask=0表示没有Reduce阶段输出文件个数和Map个数一致
  • ReduceTask默认值是1所以输出文件个数为一个
  • 如果数据分布不均匀就可能在Reduce阶段产生数据倾斜
  • ReduceTask数量并不是任意设置还要考虑业务逻辑需求有些情况下需要计算全局汇总结果就只能有一个ReduceTask
  • 具体多少个ReduceTask需要根据集群性能而定
  • 如故宫分区数不是1但是ReduceTask为1是否执行分区过程。答案是不执行分区过程。因为MapTask的源码中执行分区的前提是先判断Partition个数是否大于1。不大于1则不执行。
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Hadoop

“大数据框架之Hadoop:MapReduce(三)MapReduce框架原理——ReduceTask工作机制” 的相关文章