HDFS复制因子发生变化

时间:2013-06-13 04:57:43

标签: hdfs

如果在群集中更改了复制因子,例如,从5到3并且群集重新启动,那么旧文件块会发生什么?它们是否会被视为过度复制并被删除或复制因素仅适用于新文件?这意味着旧文件块被复制5次,新文件块(重启后)被复制3次。 如果未重新启动群集会发生什么?

2 个答案:

答案 0 :(得分:11)

  

如果在群集中更改了复制因子,例如,从5到3并且群集重新启动,那么旧文件块会发生什么?

现有/旧文件块没有任何反应。

  

它们是否会被视为过度复制并被删除或复制因素仅适用于新文件?

新的复制因子仅适用于新文件,因为复制因子不是HDFS范围的设置,而是每文件属性。

  

这意味着旧文件块被复制5次,新文件块(重启后)被复制3次。

它的反转。复制因子设置为3的现有文件将继续携带3个块。使用更高的默认复制因子创建的新文件将带有5个块。

  

如果未重新启动群集会怎样?

如果重新启动或未重新启动群集,则不会发生任何事情。由于该属性是每个文件,并且在创建文件时由客户端引导,因此不需要群集重新启动来更改此配置。您只需要更新客户端配置。

如果您要更改所有旧文件的复制因子,请考虑运行复制更改器命令:hadoop fs -setrep -R 5 /

答案 1 :(得分:0)

如果更改配置文件中的复制因子并重新启动群集:旧文件块将继续保留5个副本。这是因为,如果您更改配置文件中的复制因子,它只适用于尚未到达的新文件。

要确保复制因子从5减少到3并删除过度复制的块,您需要使用hadoop fs / dfs实用程序的setrep命令:hdfs dfs -setrep -R 5 /