HDFS降低了复制因子

时间:2013-07-23 00:18:46

标签: hadoop replication hdfs

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

4 个答案:

答案 0 :(得分:21)

更改dfs.replication仅适用于您创建的新文件,但不会修改现有文件的复制因子。

要更改已存在的文件的复制因子,您可以运行以下命令,该命令将以递归方式运行在HDFS中的所有文件中:

hadoop dfs -setrep -w 1 -R /

答案 1 :(得分:5)

当您将默认复制因子从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

答案 2 :(得分:0)

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

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

但是,只有&#34; hdfs&#34;可以写入/(&#34; hdfs&#34;是超级用户,而不是&#34; root&#34;)。所以,你可能必须运行这个:

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

答案 3 :(得分:-7)

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