【问题标题】:Changing replication of existing files in HDFS更改 HDFS 中现有文件的复制
【发布时间】:2018-03-20 13:03:25
【问题描述】:

我尝试将副本因子从 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

【问题讨论】:

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

标签: hadoop hdfs replication ambari fsck


【解决方案1】:

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

hdfs dfs -setrep -R 1 /

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

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

【讨论】:

    【解决方案2】:

    在 hdfs 中更改文件的复制因子有两种情况:

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

      hdfs dfs -setrep -R -w 2 /tmp 
      

      OR 用于更改特定文件的复制因子

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-14
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 2013-06-18
      • 2019-08-22
      • 1970-01-01
      相关资源
      最近更新 更多