分享

有没有人用过distcp进行数据同步的?

heelo 发表于 2017-9-27 15:01:00 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 11344

最近有任务,需要用到distcp来做跨集群的数据同步,诉求是多个集群向同一个集群同步数据,主要有几个考虑点,集群带宽问题,是不是应该设置个令牌轮询一类的机制保证一个时间只有一个节点占据全部资源比较好,第二个问题就是如果一次同步的数据较多,distcp的过程中出现了失败的文件,比如突然断网了停电了一类的情况,那么在复制的过程中前面成功的数据是否已经同步成功了呢?因为这些集群我没办法做断网等处理,所以不太好验证,希望有试过的同学指点一下,感激不尽

已有(4)人评论

跳转到指定楼层
qcbb001 发表于 2017-9-27 17:08:16
DistCp是支持带宽限流的,使用者可以通过命令参数bandwidth来为程序进行限流
对于网络如果万一中断,可以采用追加等方式来解决。
更多详细如下
对于增量数据同步的需求,在DistCp中也得到了很好的实现.通过update,append和*diff*2个参数能很好的解决.官方的参数使用说明:
Update: Update target, copying only missing files or directories Append: Reuse existing data in target files and append new data to them if possible. Diff: Use snapshot diff report to identify the difference between source and target.
第一个参数,解决了新增文件目录的同步,第二参数,解决已存在文件的增量更新同步,第三个参数解决删除或重命名文件的同步


回复

使用道具 举报

heelo 发表于 2017-9-27 18:12:55
qcbb001 发表于 2017-9-27 17:08
DistCp是支持带宽限流的,使用者可以通过命令参数bandwidth来为程序进行限流
对于网络如果万一中断,可以采 ...


请问下,比如说有20个map任务,在执行第十个map任务的时候网络中断,会导致整个mapreduce任务失败,但是前九个map任务已经成功了,是不是标记distcp任务失败但是实际上部分块已经复制成功,再次启动相同的任务时会跳过那些已经成功的块的复制(不加overwrite参数时),对于原来的第十个map任务则是追加写的方式写入。不知道这样子理解对不对
回复

使用道具 举报

desehawk 发表于 2017-9-27 18:49:17
heelo 发表于 2017-9-27 18:12
请问下,比如说有20个map任务,在执行第十个map任务的时候网络中断,会导致整个mapreduce任务失败,但 ...

这方面还真没做过。不过相信distcp应该有自己的处理逻辑。对于网络中断。官网也没有给出解决方案。只能根据相关资料,自己指定。比如万一中断了,通过checksum校验。或则某个文件复制中断了,可以通过DistCp参数将其删除然后在复制。

下面资料仅供参考
HDFS数据迁移解决方案之DistCp工具详解

http://www.aboutyun.com/home.php ... ckforward=1&id=3459

回复

使用道具 举报

heelo 发表于 2017-9-27 19:11:22
desehawk 发表于 2017-9-27 18:49
这方面还真没做过。不过相信distcp应该有自己的处理逻辑。对于网络中断。官网也没有给出解决方案。只能根 ...


非常感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条