我知道地图如何缩小工作原理以及我有哪些步骤:
当然,我有分区,组合器,但是现在这并不重要。
有趣的是,当我运行map reduce作业时,看起来像mappers和reducers并行工作:
所以我不知道怎么可能。
问题1。 如果我有多个正在执行映射操作的节点,那么reducer如何开始工作?因为 Reducer不能在没有正确排序的情况下开始工作?(必须为Reducer排序输入-如果映射器仍在工作,则无法对输入进行排序)。
问题2。 如果我有多个reducer,最终数据将如何合并在一起?换句话说,最终结果应该排序吗?这意味着我们要花费额外的O(n * Log n)时间来合并“多个reducer结果?”
答案 0 :(得分:1)
Reducer可以在它们可用后立即开始从映射器复制结果。这称为reduce任务的 copy阶段(请参见Hadoop权威指南的第7章MapReduce的工作原理)。
也是从那里:
...复制所有地图输出后,reduce任务移至 sort 阶段(应适当地称为 merge 阶段,例如 排序是在地图端进行的),它合并了地图 输出,保持其排序顺序。这是一轮完成的...