Hadoop 更改HDFS中现有文件的复制

Hadoop 更改HDFS中现有文件的复制,hadoop,hdfs,replication,ambari,fsck,Hadoop,Hdfs,Replication,Ambari,Fsck,我尝试将副本系数从3更改为1,并重新启动服务。但复制因子保持不变 有人能建议我如何更改现有文件的复制系数吗 这是fsck报告: Minimally replicated blocks: 45 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 45 (100.0 %) Mis-replicated blocks: 0 (0.0 %) Default

我尝试将副本系数从3更改为1,并重新启动服务。但复制因子保持不变

有人能建议我如何更改现有文件的复制系数吗

这是fsck报告:

 Minimally replicated blocks:   45 (100.0 %)

 Over-replicated blocks:        0 (0.0 %)

 Under-replicated blocks:       45 (100.0 %)

 Mis-replicated blocks:         0 (0.0 %)

 Default replication factor:    1

 Average block replication:     2.0

 Corrupt blocks:                0

 Missing replicas:              45 (33.333332 %)

 DecommissionedReplicas:        45

 Number of data-nodes:          2

 Number of racks:               1

对于面临相同问题的任何人,只需运行以下命令:

hdfs dfs -setrep -R 1 /
因为当块被复制时,您将复制因子从3更改为1(或任何更改),那么这些更改将用于在HDFS中创建的新文件,而不是旧文件


您必须自己更改旧文件的复制系数。

更改hdfs中文件的复制系数有两种情况:

  • 当文件已经存在时,在这种情况下,您需要转到该特定文件或目录并更改复制因子。要更改目录的复制因子,请执行以下操作:

    hdfs dfs -setrep -R -w 2 /tmp 
    
    或用于更改特定文件的复制因子

    hdfs dfs –setrep –w 3 /tmp/logs/file.txt
    
  • 当您希望更改当前不存在且将来将创建的新文件的复制系数时。对于它们,您需要转到hdfs-site.xml并在那里更改复制因子

    < property>
       < name>dfs.replication< /name>
        < value>2< /value>
    < /property>
    
    
    dfs.replication
    2
    
    

  • 在将配置更改为具有复制因子1后,您重新启动了哪些服务?@slashpai我正在使用Ambari,因此如果您更改复制因子,则会收到重新启动所需服务的通知。所以我重新启动了它们。当时不知道还能做什么。但现在我解决了这个问题,我只需要使用CLI命令来更改整个根目录的复制因子,一旦我对该命令进行了rand,它就已经设置好了。没有未复制的块。现在问题解决了。