我有这个查询。 假设我有3个datanode + nodemanager(集群)。我们的复制因子为3.在第一个集群中,我们得到了4个块,因此默认情况下,4个映射器将在第一个集群上并行运行。 那么当我们的复制因子为3时,我们将在开始时运行12个映射器?
答案 0 :(得分:2)
块数取决于文件大小。如果你有1GB的文件可以产生8个块(128 mb)。
所以现在所有8个块将按照data locality and rack awareness复制三次 - 但这并不意味着当您针对此文件运行任何作业时,将处理所有24(8 x 3)个块。复制用于从磁盘故障类型的方案中恢复。
所以回答你的问题:
映射器数量=输入分割数量(在大多数情况下为块数)。
群集上只会运行8个映射器。 Hadoop将根据数据位置确定这些映射器需要运行的节点 - 在集群(节点)中最近的块位置。
如果为群集启用了推测执行,则会有不同的情况 - hadoop-speculative-task-execution