Hadoop 为什么增加减速器的数量会增加减速阶段的运行时间?

Hadoop 为什么增加减速器的数量会增加减速阶段的运行时间?,hadoop,mapreduce,Hadoop,Mapreduce,我今天在AWS上运行Hadoop程序时使用了不同数量的减缩器,但是我观察到随着减缩器数量的增加,时间反而增加,而不是减少。就时间而言,我的意思是从映射100%,减少30%到映射100%,减少100%记住,数据需要通过网络发送到还原器,如果从映射器输出的数据不太大,增加还原器的数量可能会影响性能,结果需要传输到不同的还原器,随着每个reducer创建自己的文件,您需要创建更多的文件,因此I/O操作会增加 每个reduce都需要启动并在节点中创建/实例化,这会增加启动时间。此外,数据需要在需要更多网

我今天在AWS上运行Hadoop程序时使用了不同数量的减缩器,但是我观察到随着减缩器数量的增加,时间反而增加,而不是减少。就时间而言,我的意思是从映射100%,减少30%到映射100%,减少100%

记住,数据需要通过网络发送到还原器,如果从映射器输出的数据不太大,增加还原器的数量可能会影响性能,结果需要传输到不同的还原器,随着每个reducer创建自己的文件,您需要创建更多的文件,因此I/O操作会增加

每个reduce都需要启动并在节点中创建/实例化,这会增加启动时间。此外,数据需要在需要更多网络传输时间和解析时间的整个还原程序中分割

另外,如果您不使用,有一种最佳做法是将减缩器的数量设置为零,因为Hadoop不需要担心如何创建减缩器,整个过程会更快

参考自

reduces的效率在很大程度上是由 洗牌的表演

为应用程序(r)配置的减少数量为, 显然,这是一个关键因素

减少的次数过多或过少都会产生反效果:

太少的reduce会在调度reduce的节点上造成不适当的负载—在极端情况下,我们已经看到,reduce会随着时间的推移而减少处理 每减少100GB。这也会导致非常糟糕的故障恢复 由于单一减排量失败,因此情景具有重大不利影响, 对作业延迟的影响

减少次数过多会对洗牌纵横杆产生不利影响。此外,在极端情况下,它会导致创建太多的小文件作为输出 作业的名称-这会损害NameNode和的性能 后续Map减少了需要处理大量小数据的应用程序 档案


谢谢你富有启发性的回答!!