Mapper 和 Reducer 如何协同 "without" 排序?

How Mapper and Reducer works together "without" sorting?

我知道地图缩小是如何工作的以及我有哪些步骤:

当然我有分区、组合器,但现在这些并不重要。

有趣的是,当我 运行 map reduce 作业时,看起来 mappers 和 reducers 并行工作:

所以我不明白这怎么可能。

问题一 如果我有多个节点在做映射操作,reducer如何开始工作?因为 Reducer 不排序就不能开始工作吗?(输入必须为 Reducer 排序 - 如果 mapper 仍在工作,则输入无法排序)。

问题二 如果我有多个 reducer,最后的数据如何合并在一起?换句话说,最终结果应该排序对吧?这意味着我们花费 额外的 O( n*Log n) 时间来合并 "multiple reducer results?"

Reducer 可以在映射器可用时立即开始从映射器复制结果。它被称为 reduce 任务的 copy phase(参见 Hadoop 权威指南,第 7 章 MapReduce 工作原理)。
同样来自那里:

...When all the map outputs have been copied, the reduce task moves into the sort phase (which should properly be called the merge phase, as the sorting was carried out on the map side), which merges the map outputs, maintaining their sort ordering. This is done in rounds...