由于hadoop在HDFS上运行,并且数据在HDFS集群中重复以实现冗余,因此hadoop映射操作实际上是通过在集群中的不同节点上的相同数据点上运行映射器来浪费大量处理器周期吗? (根据设计,节点在它们之间有一些数据重叠,按照复制级别)。
或者首先,取决于某种某种作业管理策略,只能解决部分节点,以某种非常聪明的方式避免这种重复计算?
答案 0 :(得分:1)
每个映射器都会获得一个 InputSplit 进行处理。因此,如果您有100个 InputSplits 100个映射器将由框架生成。然后每个映射器将检查它是否具有所需的所有数据 - 如果不是,它将下载所有必需的数据并开始计算。一个 InputSplit 永远不会被分配两次。