作为背景,我们有两个集群,目前用于生产和开发。作为这项工作的一部分,我们正在将文件(使用hadoop distcp-update)从生产集群复制到开发集群,这些文件是由活动进程生成的(也就是说,它也可以有效地作为dr集群工作)。
两个集群上的hadoop版本相同:hadoop2.6.0-cdh5.12.1
但是,开发集群的存储容量只有活动集群的65%左右。为了解决这个问题,我们有一个默认的复制因子,live为3,development为2。
我注意到从live复制到development的文件的复制因子是3。我读了一些书,认为这就是它应该表现的样子,即使这不是我希望它表现的样子。
我有两个问题:
一些研究表明,-setrep可以在复制后使用,但是-d dfs.replication=x可以用作copy命令的一部分。有没有人有过这两种选择的经验?
以前是否有人必须处理这种情况并找到不同的解决办法?
谢谢你的帮助。
1条答案
按热度按时间8ftvxx2r1#
我做了一些测试并做了以下工作:
将distcp命令从
hadoop distcp -update $SOURCE $TARGET
至hadoop distctp -D dfs.replication=2 -update $SOURCE $TARGET
遍历以前复制的文件,因此复制因子为3并已使用hdfs dfs -setrep -w 2 $TARGET
修正复制因子。磁盘空间开始下降,所以我认为这是一个成功。也许有一天我可以说我知道我在做什么。