2011-12-14 19 views
0

我写过一个作业,他的一个角色是复制HDFS中很多非常大的文件。 我发现使用FileUtil.copy()效率不高。如何有效地在同一个文件系统内复制文件

是否有更有效的方法来做到这一点?我听说关于DistCp.java是否更好,然后FileUtil.copy()?有没有DistCp.java Cloudera的实现?

回答

2

有没有DistCp.java Cloudera的实现?

不确定你的意思是Cloudera的实现。它是标准Hadoop安装的一部分,所以它也应该成为CDH的一部分。您也可以直接使用DistCp命令。 DistCp命令在内部调用DistCp.java类来复制文件。

我听说有关DistCp.java是否比FileUtil.copy()更好?

FileUtil.copy()方法正在复制序列中的文件,而DistCp产生MR作业来复制更有效的文件,因为副本并行发生。检查DistCp文档以获取更多详细信息。

+0

有其复制文件的文件系统之间,换句话说,HDFS内的另一个复制方法: 公共静态布尔副本(文件系统的SRCF, 路径SRC, 文件系统dstFS, 路径DST, 布尔deleteSource, 布尔覆盖, 配置conf) 抛出IOException 。 – zohar 2011-12-14 15:45:46

相关问题