我已经将复制因子从3减少到1,但是没有看到从namenode或datanodes之间删除过度复制的hdfs文件块的任何活动。有没有办法监视或强制复制作业?
mzillmmw1#
改变 dfs.replication 将仅应用于您创建的新文件,但不会修改已存在文件的复制因子。要更改已存在文件的复制因子,可以运行以下命令,该命令将在hdfs中的所有文件上递归运行:
dfs.replication
hadoop dfs -setrep -w 1 -R /
6g8kf2rb2#
新的复制因子只影响新文件。更改在shell中运行的现有文件的复制因子(在具有hadoop入口点的节点上)
hadoop fs -setrep -w <replication factor> -R /
但是,只有“hdfs”可以写入/(“hdfs”是超级用户,而不是“root”)。所以,也许你必须运行这个:
sudo -u hdfs hadoop fs -setrep -w <replication factor> -R /
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
qojgxg4l4#
也许你可以写一个Map函数来删除文件块!
4条答案
按热度按时间mzillmmw1#
改变
dfs.replication
将仅应用于您创建的新文件,但不会修改已存在文件的复制因子。要更改已存在文件的复制因子,可以运行以下命令,该命令将在hdfs中的所有文件上递归运行:
6g8kf2rb2#
新的复制因子只影响新文件。更改在shell中运行的现有文件的复制因子(在具有hadoop入口点的节点上)
但是,只有“hdfs”可以写入/(“hdfs”是超级用户,而不是“root”)。所以,也许你必须运行这个:
qf9go6mv3#
当您将默认复制因子从3更改为cloudera manager中的2时
然后,只有写入的新数据才有每个块的2个副本。
请使用
如果要更改所有现有数据的复制因子,请在命令行上(通常是具有hdfs网关角色的节点)。此命令递归地更改根目录/下所有文件的复制因子。
语法:
参考文献:
http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.2.0-cdh5.0.0-beta-2/hadoop-project-dist/hadoop-common/filesystemshell.html#setrep
qojgxg4l4#
也许你可以写一个Map函数来删除文件块!