我需要将一个目录从一个集群复制到另一个具有类似 HDFS 的目录(两者都是 MAPR 集群)。
我打算使用DistCp
Java API。但我想避免目录中文件的重复副本。我想知道这些操作是否容错?即,如果由于连接丢失而没有完全复制文件,DistCp 是否再次启动复制以正确复制文件?
distcp
使用 MapReduce 来影响其分布、错误处理和恢复以及报告。
请参阅更新和覆盖
您可以使用 -overwrite 选项来避免重复此外,您还可以检查更新选项。如果网络连接失败,一旦连接恢复,您可以使用覆盖选项重新启动
请参阅上述指南链接中提到的 -update 和 -overwrite 示例。
这是重构 distcp 的链接: https ://hadoop.apache.org/docs/r2.7.2/hadoop-distcp/DistCp.html
正如“@RamPrasad G”所提到的,我猜你除了在网络故障的情况下重做 distcp 之外别无选择。
一些不错的读物:
Hadoop distcp 网络故障与 WebHDFS
http://www.ghostar.org/2015/08/hadoop-distcp-network-failures-with-webhdfs/
两个 HA 集群之间的 Distcp
http://henning.kropponline.de/2015/03/15/distcp-two-ha-cluster/
使用 DistCp 通过 S3 向/从 Altiscale 传输数据
https://documentation.altiscale.com/transferring-data-using-distcp 此页面有一个带有重试的 shell 脚本的链接,这可能对您有所帮助。
注:感谢原作者。