我已将复制因子从 3 减少到 1,但没有看到来自名称节点或数据节点之间的任何活动以删除过度复制的 HDFS 文件块。有没有办法监控或强制复制作业?
问问题
9806 次
4 回答
21
更改dfs.replication
仅适用于您创建的新文件,但不会修改已存在文件的复制因子。
要更改已存在文件的复制因子,您可以运行以下命令,该命令将在 HDFS 中的所有文件上递归运行:
hadoop dfs -setrep -w 1 -R /
于 2013-07-23T02:50:27.993 回答
5
当您将默认复制因子从 3 更改为 cloudera 管理器中的 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
参考:
于 2014-07-29T07:20:02.963 回答
0
新的复制因子只影响新文件。更改在 shell 中运行的现有文件的复制因子(在具有 hadoop 入口点的节点上)
hadoop fs -setrep -w <replication factor> -R /
但是,只有“hdfs”可以写入 /(“hdfs”是超级用户,而不是“root”)。所以,可能你将不得不运行这个:
sudo -u hdfs hadoop fs -setrep -w <replication factor> -R /
于 2017-04-24T14:45:48.400 回答
-8
也许您可以编写一个映射函数来删除文件块!
于 2013-07-23T01:21:37.520 回答