文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

hadoop distcp是什么

2023-06-03 02:23

关注

这篇文章主要讲解了“hadoop distcp是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“hadoop distcp是什么”吧!

概述

distcp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。 由于使用了Map/Reduce方法,这个工具在语义和执行上都会有特殊的地方。 这篇文档会为常用distcp操作提供指南并阐述它的工作模型。

标识描述备注
Preserve
  r: replication number
  b: block size
  u: user
  g: group
  p: permission
修改次数不会被保留。并且当指定 忽略失败就像在 附录中提到的,这个选项会比默认情况提供关于拷贝的更精确的统计, 同时它还将保留失败拷贝操作的日志,这些日志信息可以用于调试。最后,如果一个map失败了,但并没完成所有分块任务的尝试,这不会导致整个作业的失败。
记录日志到 <logdir>DistCp为每个文件的每次尝试拷贝操作都记录日志,并把日志作为map的输出。 如果一个map失败了,当重新执行时这个日志不会被保留。
同时拷贝的最大数目指定了拷贝数据时map的数目。请注意并不是map数越多吞吐量越大。
覆盖目标如果一个map失败并且没有使用如果源和目标的大小不一样则进行覆盖像之前提到的,这不是"同步"操作。 执行覆盖的唯一标准是源文件和目标文件大小是否相同;如果不同,则源文件替换目标文件。 像 下面提到的,它也改变生成目标路径的语义, 用户使用要小心。
使用<urilist_uri> 作为源文件列表这等价于把所有文件名列在命令行中。 urilist_uri 列表应该是完整合法的URI。
更新和覆盖

这里给出一些 -update和 -overwrite的例子。 考虑一个从/foo/a 和 /foo/b 到 /bar/foo的拷贝,源路径包括:

    hdfs://master1:8020/foo/a 
    hdfs://master1:8020/foo/a/aa 
    hdfs://master1:8020/foo/a/ab 
    hdfs://master1:8020/foo/b 
    hdfs://master1:8020/foo/b/ba 
    hdfs://master1:8020/foo/b/ab

如果没设置-update或 -overwrite选项, 那么两个源都会映射到目标端的 /bar/foo/ab。 如果设置了这两个选项,每个源目录的内容都会和目标目录的 内容 做比较。distcp碰到这类冲突的情况会终止操作并退出。

默认情况下,/bar/foo/a 和 /bar/foo/b 目录都会被创建,所以并不会有冲突。

现在考虑一个使用-update合法的操作:
distcp -update hdfs://master1:8020/foo/a \ 
               hdfs://master1:8020/foo/b \ 
               hdfs://master2:8020/bar

其中源路径/大小:

    hdfs://master1:8020/foo/a 
    hdfs://master1:8020/foo/a/aa 32 
    hdfs://master1:8020/foo/a/ab 32 
    hdfs://master1:8020/foo/b 
    hdfs://master1:8020/foo/b/ba 64 
    hdfs://master1:8020/foo/b/bb 32

和目的路径/大小:

    hdfs://master2:8020/bar 
    hdfs://master2:8020/bar/aa 32 
    hdfs://master2:8020/bar/ba 32 
    hdfs://master2:8020/bar/bb 64

会产生:

    hdfs://master2:8020/bar 
    hdfs://master2:8020/bar/aa 32 
    hdfs://master2:8020/bar/ab 32 
    hdfs://master2:8020/bar/ba 64 
    hdfs://master2:8020/bar/bb 32

只有master2的aa文件没有被覆盖。如果指定了 -overwrite选项,所有文件都会被覆盖。

附录

Map数目

distcp会尝试着均分需要拷贝的内容,这样每个map拷贝差不多相等大小的内容。 但因为文件是最小的拷贝粒度,所以配置增加同时拷贝(如map)的数目不一定会增加实际同时拷贝的数目以及总吞吐量。

如果没使用-m选项,distcp会尝试在调度工作时指定map的数目 为 min (total_bytes / bytes.per.map, 20 * num_task_trackers), 其中bytes.per.map默认是256MB。

建议对于长时间运行或定期运行的作业,根据源和目标集群大小、拷贝数量大小以及带宽调整map的数目。

hadoop distcp -Ddistcp.bytes.per.map=1073741824 -Ddfs.client.socket-timeout=240000000 -Dipc.client.connect.timeout=40000000 -i -update  hdfs://master1:8020/foo/a hdfs://master1:8020/foo/b hdfs://master2:8020/bar/foo

不同HDFS版本间的拷贝

对于不同Hadoop版本间的拷贝,用户应该使用HftpFileSystem。 这是一个只读文件系统,所以distcp必须运行在目标端集群上(更确切的说是在能够写入目标集群的TaskTracker上)。 源的格式是 hftp://<dfs.http.address>/<path> (默认情况dfs.http.address是 <namenode>:50070)。

Map/Reduce和副效应

像前面提到的,map拷贝输入文件失败时,会带来一些副效应。

感谢各位的阅读,以上就是“hadoop distcp是什么”的内容了,经过本文的学习后,相信大家对hadoop distcp是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯