开发者社区> 问答> 正文

MapReduce 优化方法Reduce阶段是什么?

MapReduce 优化方法Reduce阶段是什么?

展开
收起
真的很搞笑 2021-12-05 01:07:17 358 0
1 条回答
写回答
取消 提交回答
  • Reduce阶段: (1)合理设置 map 和 reduce 数:两个都不能设置太少,也不能设置太多。太少,会导致 task 等待,延长处理时间;太多,会导致 map、reduce 任务间竞争资源,造成处理超时等错误 (2)设置 map、reduce 共存:调整 slowstart.completedmaps 参数,使 map 运行到一定程度后,reduce 也开始运行,减少 reduce 的等待时间。 (3)使用 reduce:因为 reduce 在用于搜集数据集的时候将会产生大量的网络消耗。 (4)合理设置 reduce 端的 buffer:默认情况下,数据达到一个阈值的时候,buffer中的数据就会写入磁盘,然后 reduce 会从磁盘中获得所有的数据。也就是说,buffer 和 reduce 是没有直接关联的,中间多个一个写磁盘->读磁盘的过程,既然有这个弊端,那么就可以通过参数置使得 buffer 中的一部分数据可以直接输送到 reduce,从而减少 IO 开销:mapred.job.reduce.input.buffer.percent,默认为 0.0。当值大于 0 时候,会保留指定比例的内存读 buffer 中的数据直接拿给reduce 使用。这样一来,设置 buffer 需要内存,读取数据需要内存,reduce 计算 也要内存,所以要根据作业的运行情况进行调整。

    2021-12-05 01:07:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于E-MapReduce梨视频推荐系统 立即下载
大数据解决方案构建详解 以阿里云E-MapReduce为例 立即下载
阿里云E-MapReduce 立即下载