2016-07-24 59 views
0

我有这个查询。 可以说我有3个datanode + nodemanager(集群)。我们有复制因子3.在第一个集群中我们有4个块,所以默认情况下4个映射器将在第一个集群上并行运行。 然后,因为我们有复制因子3,我们将有12个映射器开始运行?将会运行多少个映射器?

回答

2

块数取决于文件大小。如果您有1GB的文件,可以生成8个块(128 MB)。

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

因此,要回答你的问题:

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

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

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