我有这个查询。假设我有3个datanode+nodemanager(集群)。我们的复制因子为3。在第一个集群中,我们得到了4个块,所以默认情况下,4个映射器将在第一个群集上并行运行。那么,由于复制因子为3,我们将在开始时运行12个映射程序?
块的数量取决于文件大小。如果你有1gb的文件,构成8个块(128 mb)。
因此,现在,通过遵循数据位置和机架感知,所有8个块都将被复制三次,但这并不意味着当您对此文件运行任何作业时,所有24个(8 x 3)块都将得到处理。复制用于从磁盘故障类型的场景中恢复。
因此,为了回答您的问题:
映射器的数量=输入拆分的数量(在大多数情况下为块的数量)。
集群上将只有8个映射程序在运行。Hadoop将根据数据位置决定这些映射程序需要在哪个节点上运行——在集群(节点)中最近的块位置。
如果为集群启用了推测执行,则会有不同的情况-hadoop推测任务执行