2017-07-19 75 views
1

我们使用的复制因子为3的Hortonworks HDP 2.1(HDFS 2.4)。 我们最近已经退役了一个数据节点,并且在复制块中留下了很多簇。如何降低HDFS目录中的复制因子及其影响

集群现在试图通过在其他节点之间分配复制块来满足复制因子。

  1. 如何停止该过程。我确定一些文件只能被复制两次。如果我在该目录中将复制因子更改为2,该过程是否会终止?

  2. 对于具有3个副本的文件的目录,复制因子为2会产生什么影响。群集是否会启动另一个进程以删除3个副本的每个文件的多余副本?

感谢您对此的帮助。请分享参考。 谢谢。 Sajeeva。

+0

[HDFS复制因子更改]的可能重复(https://stackoverflow.com/questions/17079513/hdfs-replication-factor-change) – VIPER

回答

1

我们最近已经退役了一个数据节点,并且在集群中留下了大量被复制的块。

如果DataNode已正常退役,那么它不应导致欠复制块。在解除授权期间,HDFS将该DataNode上托管的块重新复制(复制)到群集中的其他DataNode,以便保持所需的复制因子。这个更多细节在这里:

  1. 如何阻止这一进程。我确定一些文件只能被复制两次。如果我在该目录中将复制因子更改为2,该过程是否会终止?

没有确定性的方法来终止整个过程。但是,如果您在某些未复制文件中将复制因子降低为2,则NameNode将停止为这些文件的块调度重新复制工作。这意味着对于这些文件的块,HDFS将停止跨不同DataNode复制新副本。

从容错角度来看,典型的复制因子3是可取的。您可能会考虑将这些文件的复制因子设置为3以后。

  1. 对于具有3份副本的文件的目录,复制因子为2会产生什么影响。群集是否会启动另一个进程以删除3个副本的每个文件的多余副本?

是的,NameNode会将这些文件标记为过度复制。作为响应,它将在DataNodes中安排块删除以恢复所需的复制因子2。这些块删除操作会根据它们的检测信号异步分配到DataNode。在DataNode中,块删除将异步执行以清除磁盘中的底层文件。

有关详细信息,请参见Apache Hadoop Wiki