更改 HDFS 中现有文件的复制

Changing replication of existing files in HDFS

我尝试将副本因子从 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中文件的复制因子有两种情况:

  1. 当文件已经存在时,您需要转到该特定文件或目录并更改复制因子。用于更改目录的复制因子:

    hdfs dfs -setrep -R -w 2 /tmp 
    

    或更改特定文件的复制因子

    hdfs dfs –setrep –w 3 /tmp/logs/file.txt
    
  2. 当您想要为当前不存在但将来会创建的新文件更改复制因子时。对于他们,您需要转到 hdfs-site.xml 并在那里更改复制因子

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