由于hadoop在HDFS上运行,并且数据在HDFS集群中重复以获得冗余,因此hadoop映射操作在集群中的不同节点上的相同数据点上运行映射程序实际上会浪费大量处理器周期吗?(因为根据复制级别,节点之间的数据在设计上有一些重叠)。
还是首先,根据某种作业管理策略,只寻址部分节点,以某种非常聪明的方式避免这种重复计算?
每个映射器都有一个要处理的InputSplit。所以,如果您有100个InputSplits,那么框架将生成100个映射器。然后,每个映射器都将检查它是否拥有所需的所有数据——如果没有,它将下载所有所需的数据并开始计算。一个InputSplit永远不会分配两次。