假设HDFS的复制因子为3,因此对于映射任务,有三个保存其输入数据的节点。映射任务是从所有3个节点并行读取还是随机选择其中之一?

我做了一些实验,将一个数据节点设置为具有非常低的带宽并获得一些非常慢的映射任务,所以我猜想映射任务不会从所有可用数据节点中并行读取,对吗?

谢谢您的帮助!

最佳答案

如果您的复制因子为3,则集群中有三个节点保存特定映射任务的输入数据。

Job Tracker将仅将映射任务分配给这三个节点之一,因此它仅从该节点读取数据。

Hadoop具有称为推测执行的功能。在推测性执行中,如果作业跟踪器发现其中一个映射任务花费的时间太长,它将在另一个有可用数据的节点上启动同一映射任务。发送到 reducer 的数据取自首先完成的映射任务。在这种情况下,您将有2个 map task 读取相同的输入数据,但在不同的节点上。

09-26 15:25