MapReduce - 在地图未完成时减少 运行

MapReduce - reduce running while map is not finished

我已经在 hadoop 中实现了一个简单的 WordCount 应用程序。在我的集群上,我有一个名称节点和 4 个数据节点。复制率设置为 4。 在文件系统中,我放置了许多 lorem-impsum 文件。 虽然 运行 wordcount 应用程序我看到 reducer 工作,即使映射器尚未完成。

2021-10-29 14:53:31,044 INFO mapreduce.Job:  map 70% reduce 23%

这是如何运作的? 在许多教程页面上都写了(例如一页): “映射器仍在进行中时,减速器无法启动” https://www.talend.com/resources/what-is-mapreduce/

如果映射的结果集没有完成,reducer如何工作?

映射器发出数据后,它会经历两个步骤:

  1. 它被洗牌了 - 这是根据其键和分区程序逻辑将数据发送到正确的 reducer 的过程。
  2. 它已排序 - 这发生在 reducer 本身。

因此,即使映射器仍在发出数据,reducer 任务也会创建并在数据到达时对其进行排序。你是对的,因为在所有映射完成之前,它们实际上不会开始处理值。