更改HDFS中现有文件的复制

时间:2018-03-20 13:03:26

标签: 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 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

2 个答案:

答案 0 :(得分:0)

对于遇到同样问题的任何人,只需运行此命令:

hdfs dfs -setrep -R 1 /

因为当块复制不足并且您将复制因子从3更改为1(或任何更改)时,这些更改将针对将在HDFS中创建的新文件,而不是旧文件。

您必须自行更改旧文件的复制因子。

答案 1 :(得分:0)

更改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>