hdfs 如何删除过度复制的块

how hdfs removes over-replicated blocks

例如,我使用复制因子 2 将文件写入 HDFS。我正在写入的节点现在拥有文件的所有块。文件所有块的其他副本分散在集群中所有剩余的节点周围。这是默认的 HDFS 策略。 如果我将文件的复制因子降低到 1,到底会发生什么? HDFS 如何决定从哪些节点删除哪些块?我希望它尝试从文件块数最多的节点中删除块?

为什么我要问 - 如果是这样,那将是有道理的 - 它会减轻文件的处理。因为如果所有块只有一个副本,并且所有块都位于同一个节点上,那么由于数据传输到集群中的其他节点,使用 map-reduce 处理文件会更加困难。

过度复制的块由 HDFS 从不同节点随机删除,并重新平衡,这意味着它们不仅仅是从当前节点删除。

当一个块变成over-replicated时,name node选择一个副本来移除。 name node 不希望减少承载副本的机架数量,其次更愿意从 data node 中删除可用磁盘数量最少的副本 space。这可能有助于重新平衡集群上的负载。

来源:The Architecture of Open Source Applications