有多少映射器 运行?

How many mappers will run?

我有这个问题。 假设我有 3 个数据节点+节点管理器(集群)。我们的复制因子为 3。在第一个集群中我们有 4 个块,因此默认情况下 4 个映射器将 运行 在第一个集群上并行。 然后因为我们有 3 的复制因子,我们将有 12 个映射器 运行ning 在开始时 ?

块数取决于文件大小。如果您有 1gb 的文件,可以构成 8 个块(共 128 mb)。

所以现在所有 8 个块将按照 data locality and rack awareness 复制三次 - 但这并不意味着当您 运行 任何作业时将处理所有 24 (8 x 3) 个块这个文件。复制用于从磁盘故障类型的场景中恢复。

所以回答你的问题:

映射器的数量 = 输入拆分的数量(在大多数情况下是块的数量)。

集群上只有 8 个映射器 运行ning。 Hadoop 将根据数据位置决定这些映射器需要在哪个节点上 运行 - 在集群(节点)中最近的块位置。

如果为集群启用推测执行,将会有不同的情况 - hadoop-speculative-task-execution