hdfs减少了复制因子

cotxawn7  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(449)

我已经将复制因子从3减少到1,但是没有看到从namenode或datanodes之间删除过度复制的hdfs文件块的任何活动。有没有办法监视或强制复制作业?

mzillmmw

mzillmmw1#

改变 dfs.replication 将仅应用于您创建的新文件,但不会修改已存在文件的复制因子。
要更改已存在文件的复制因子,可以运行以下命令,该命令将在hdfs中的所有文件上递归运行:

hadoop dfs -setrep -w 1 -R /
6g8kf2rb

6g8kf2rb2#

新的复制因子只影响新文件。更改在shell中运行的现有文件的复制因子(在具有hadoop入口点的节点上)

hadoop fs -setrep -w <replication factor> -R /

但是,只有“hdfs”可以写入/(“hdfs”是超级用户,而不是“root”)。所以,也许你必须运行这个:

sudo -u hdfs hadoop fs -setrep -w <replication factor> -R /
qf9go6mv

qf9go6mv3#

当您将默认复制因子从3更改为cloudera manager中的2时

Cloudera Manager(CDH 5.0.2) -> HDFS -> Configuration -> View and Edit -> Service-Wide -> Replication -> Replication Factor (dfs.replication) -> 2

然后,只有写入的新数据才有每个块的2个副本。
请使用

hdfs dfs -setrep 2 /

如果要更改所有现有数据的复制因子,请在命令行上(通常是具有hdfs网关角色的节点)。此命令递归地更改根目录/下所有文件的复制因子。
语法:

hdfs dfs -setrep [-R] [-w] <numReplicas> <path>

where 

-w flag requests that the command wait for the replication to complete and can take a very long time

-R flag is just for backwards compatibility and has no effect

参考文献:
http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.2.0-cdh5.0.0-beta-2/hadoop-project-dist/hadoop-common/filesystemshell.html#setrep

qojgxg4l

qojgxg4l4#

也许你可以写一个Map函数来删除文件块!

相关问题