我有一个长期运行的 MapReduce 工作,其中一些映射器比其他映射器花费更多的时间。
检查 Web 界面上的统计信息,我看到我的组合器也启动了减速器(其中大部分空闲,因为只有 2 个映射器仍在运行)。
尽管在所有映射器完成之前不浪费时间并进行一些预聚合似乎是合理的,但我找不到任何有关此行为的文档。谁能确认这确实是 Hadoop 的一个功能,或者只是在 Web 界面上显示错误?
我有一个长期运行的 MapReduce 工作,其中一些映射器比其他映射器花费更多的时间。
检查 Web 界面上的统计信息,我看到我的组合器也启动了减速器(其中大部分空闲,因为只有 2 个映射器仍在运行)。
尽管在所有映射器完成之前不浪费时间并进行一些预聚合似乎是合理的,但我找不到任何有关此行为的文档。谁能确认这确实是 Hadoop 的一个功能,或者只是在 Web 界面上显示错误?
当映射器发出合理数量的数据时,组合器启动。请注意,组合器作为映射器输出的聚合(通常)运行(而不是在化简端)。更多细节可以在这里找到。
此外,reducer 可以在所有映射器完成之前开始(仅)收集映射器发出的数据。这被称为减速器的洗牌阶段。您可以通过更改mapred.reduce.slowstart.completed.maps
属性(或mapreduce.job.reduce.slowstart.completedmaps
在较新版本中)来更改减速器开始收集数据的时间。有关此 SO 帖子的更多详细信息。