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