DistCp 介绍

DistCp( distributed copy )是用于大型内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。

Distcp用法

基本用法

集群间复制

# nn1是源集群,nn2是目标集群
hadoop distcp hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo

这会将nn1 上的/foo/bar下的命名空间扩展为一个临时文件, 将其内容划分到一组map任务中,并在每个NodeManager上执行从nn1到nn2的拷贝任务。

指定多个源目录

hadoop distcp hdfs://nn1:8020/foo/a hdfs://nn1:8020/foo/b
hdfs://nn2:8020/bar/foo

或者使用 -f 选项,从文件中获取多个源:

hadoop distcp -f hdfs://nn1:8020/srclist hdfs://nn2:8020/bar/foo

其中srclist的内容:

hdfs://nn1:8020/foo/a
hdfs://nn1:8020/foo/b

指定map数

# -m 参数指定map数,即并行度
hadoop distcp -m 30 hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo

指定拷贝策略

# -overwrite 覆盖目标
hadoop distcp -overwrite hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo
# -update 源文件和目标文件大小、块大小和校验和不同则覆盖
hadoop distcp -update hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo

指定运行参数

# -D 指定运行参数,可指定多个参数
hadoop distcp -D ipc.client.fallback-to-simple-auth-allowed=true hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo

命令行选项

标识 描述 备注
-p[rbugpaxt]

Preserve

r: replication number

b: block size

u: user

g: group

p: permission

c: checksum-type

a: ACL

x: XAttr

t: timestamp

当指定-update时,状态更新将不会同步,除非文件大小也不同(即文件被重新创建)。如果指定了-pa, DistCp也会保留权限,因为acl是权限的超集。选项-pr只有在源目录和目标目录都没有被擦除编码时才有效。
-i 忽略失败 就像在附录中提到的,这个选项会比默认情况提供关于拷贝的更精确的统计, 同时它还将保留失败拷贝操作的日志,这些日志信息可以用于调试。最后,如果一个map失败了,但并没完成所有分块任务的尝试,这不会导致整个作业的失败。
-log <logdir> 写入日志的目录 DistCp为每个文件的每次尝试拷贝的操作都记录日志,并把日志作为map的输出。 如果一个map失败了,当重新执行这个map时,这个日志不会被保留。
-v 在 SKIP/COPY 日志中记录附加信息(路径、大小) 此选项只能与 -log 选项一起使用。
-m <num_maps> 同时拷贝的最大数量 指定了拷贝数据时map的数目。请注意,并不是map数越多吞吐量越大。
-overwrite 覆盖目标 如果map失败且未指定-i,则拆分中的所有文件(不仅是失败的文件)都将被重新拷贝。正如使用文档中所说到的那样,它还更改了生成目标路径的语义,因此用户应谨慎使用它。
-update 如果源和目标的大小、块大小或校验和不同,则覆盖 如前所述,这不是“sync”操作。检查的标准是源和目标文件大小、块大小和校验和;如果它们不同,源文件将替换目标文件。正如使用文档中所讨论的那样,它还更改了生成目标路径的语义,因此用户应谨慎使用它。
-append 具有相同名称但不同长度的文件的增量副本 如果源文件的长度大于目标文件的长度,则比较公共长度部分的校验和。如果校验和匹配,则使用读取和附加功能仅复制差异部分。-append选项仅适用于-update,不适用于-skipcrccheck
-f <urilist_uri> 使用 <urilist_uri> 中的列表作为 src 列表 这相当于在命令行中列出每个源目录。urilist_uri列表应该是一个完全合法的URI。
-filters 一个包含正则表达式列表的文件的路径,该文件中每行一个正则表达式。与正则表达式匹配的路径将从拷贝任务中排除。 支持 java.util.regex.Pattern 指定的正则表达式。
-filelimit <n> 限制文件总数小于等于n 已弃用!在新的 DistCp 中被忽略。
-sizelimit <n> 限制总大小为小于等于n字节 已弃用!在新的 DistCp 中被忽略。
-delete 删除dst中存在但src中不存在的文件 删除是由 FS Shell 完成的。因此,如果它被使用,trash也将被使用。删除仅适用于-update-overwrite选项。
-strategy{dynamic|uniformsize} 选择要在 DistCp 中使用的复制策略。 默认情况下,使用uniformsize。Map根据每个map复制的文件的总大小进行平衡,类似于遗留。如果指定了“dynamic”,则使用DynamicInputFormat
-bandwidth 指定每个map的带宽,单位是MB/秒 每个map将被限制仅使用指定的带宽。这并不一定是精确的。在复制期间,map会减少其带宽消耗,使所使用的网络带宽趋向于指定的值。
-atomic {-tmp <tmp_dir>} 指定原子提交,带有可选的tmp目录。 -atomic命令DistCp将源数据复制到一个临时目录,然后将临时目录原子移动到最终目录。数据要么以完整一致的形式在最终目录处可用,要么完全不可用。可选项,-tmp可以用来指定临时目录位置。如果未指定,则选择默认值。注意:临时目录必须在最终目录的集群上。
-async 异步运行 DistCp。Hadoop 作业启动后立即退出。 Hadoop Job-id被记录下来,以便跟踪。
-diff <oldSnapshot> <newSnapshot> 使用给定两个快照之间的快照差异报告来识别源和目标之间的差异,并将差异应用于目标,使其与源同步。

此选项仅与-update选项一起时有效,并且应满足以下条件。 1. 源文件系统和目标文件系统都必须是DistributedFileSystem。

2. 在源FS上已经创建了两个快照<oldSnapshot>和<newSnapshot>,且<oldSnapshot>比<newSnapshot>早。

3. 目标具有相同的快照<oldSnapshot>。自从创建<oldSnapshot>以来,没有对目标做任何更改,因此<oldSnapshot>的内容与目标的当前状态相同。目标中的所有文件/目录与源的<oldSnapshot>相同。

-rdiff <newSnapshot> <oldSnapshot> 使用给定两个快照之间的快照差异报告,以确定自从在目标上创建快照<oldSnapshot>以来,目标上发生了哪些更改,并将差异反向应用到目标,并从源的<oldSnapshot>复制修改后的文件,使目标与<oldSnapshot>相同。

此选项仅与-update选项一起时有效,且应满足以下条件。 1. 源文件系统和目标文件系统都必须是DistributedFileSystem。源和目标可以是两个不同的集群/路径,也可以是完全相同的集群/路径。在后一种情况下,修改后的文件将从目标的<oldSnapshot>复制到目标的当前状态)。

2. 在目标FS上已经创建了两个快照<newSnapshot>和<oldSnapshot>,且<oldSnapshot>比<newSnapshot>早。自从在目标上创建<newSnapshot>以来,没有在目标上做任何更改。

3. 源有相同的快照<oldSnapshot>,它的内容与目标上的<oldSnapshot>相同。目标的<oldSnapshot>中的所有文件或目录与源的<oldSnapshot>相同。

-numListstatusThreads 用于构建文件列表的线程数 最多 40 个线程。
-skipcrccheck 是否跳过源路径和目标路径之间的 CRC 检查。
-blocksperchunk <blocksperchunk> 每个块的块数。指定后,将文件分割成块以并行复制。 如果设置为正值,大于这个值的块将被分割成<blocksperchunk>块的块,以便并行传输,并在目标上重新组装。默认情况下,<blocksperchunk>是0,文件将被完整地传输,而不会被分割。此开关仅适用于源文件系统实现了getBlockLocations方法,目标文件系统实现了concat方法的情况。
-copybuffersize <copybuffersize> 要使用的复制缓冲区的大小。默认情况下,<copybuffersize>设置为8192B
-xtrack <path> 将缺少源文件的信息保存到指定路径。 此选项仅对-update选项有效。这是一个实验属性,不能与-atomic选项一起使用。
-direct 直接写入目标路径 当目标是对象存储时,可用于避免可能非常昂贵的临时文件重命名操作。

Hadoop数据迁移工具DistCp相关推荐

  1. [Hadoop]数据复制distcp vs cp

    1.需求 我们项目中需要复制一个大文件,最开始使用的是hadoop cp命令,但是随着文件越来越大,拷贝的时间也水涨船高.下面进行hadoop cp与hadoop distcp拷贝时间上的一个对比.我 ...

  2. Sqoop数据迁移工具的使用

    文章作者:foochane 原文链接:https://foochane.cn/article/2019063001.html Sqoop数据迁移工具的使用 sqoop简单介绍 sqoop数据到HDFS ...

  3. 8款数据迁移工具选型,主流且实用

    前言:ETL(是Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理.转换.迁移的场景.今天特地给大家汇总了一些目前市面上 ...

  4. 数据迁移工具,用这8种就够了

    前言 最近由于工作需要需要进行数据迁移,那么ETL数据迁移工具该用哪些呢? ETL(是Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业应用来说,我们经常会遇 ...

  5. 8 种主流数据迁移工具技术选型,yyds!

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  6. 数据迁移工具,用这8种就够了!!!

    前言 最近有些小伙伴问我,ETL数据迁移工具该用哪些. ETL(是Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理.转 ...

  7. Hadoop数据迁移解决方案 上

    Hadoop数据迁移解决方案 数据迁移场景 冷热集群数据同步.分类存储 集群数据整体迁移 数据的准时同步 数据迁移考虑的因素 Bandwidth-带宽 带宽用多会影响到线上业务的任务运行,带宽用的少会 ...

  8. 3.2.3 Sqoop 数据迁移工具, 导入数据import, MySQL到HDFS/Hive, 导出数据export,增量数据导入, Sqoop job,常用命令及参数

    目录 数据迁移工具 -- Sqoop 第一部分 Sqoop概述 第二部分 安装配置 第三部分 应用案例 第 1 节 导入数据import MySQL 到 HDFS MySQL 到 Hive 第 2 节 ...

  9. Hadoop数据收集与入库系统Flume与Sqoop

    之前说了,大数据平台技术栈 (可点击查看),今天就来说说其中的采集层Sqoop和Flume! Hadoop数据收集与入库系统Flume与Sqoop 背景知识 ·简单介绍· 1. Hadoop提供了一个 ...

最新文章

  1. Apache 访问权限修改
  2. IPSec 之 Server2003Cisco路由器(1)
  3. java.lang.ClassNotFoundException: Didn't find class com.tzutalin.dlibtest.MainActivity_
  4. jQuery常用方法(二)-事件
  5. 在Vue中使用JSX,很easy的
  6. java多线程命名,命名线程和当前线程
  7. Android开发笔记(一百零一)滑出式菜单
  8. mysql表 spid program_oracle 解锁某张表 和编译存储过程卡死问题处理
  9. 成功在MP4封装的H264视频中提取能播放的裸流
  10. cgicc输出指定编码为utf-8
  11. pytorch中的Variable详解
  12. Java基础之continue与break区别
  13. 我的世界java版怎么打开游戏菜单_我的世界游戏界面设置方法
  14. Altium_Designer17-PCB-如何重新定义板子外形
  15. Chrome插件英雄榜111期更新《Unsplash For Chrome》查找免费无版权超清图并直接插入任意在线编辑器...
  16. 2016年度总结——在路上
  17. 09 数据存储Introduce
  18. 系统论:利用系统论改进做事方法(行动指南)
  19. Multisim基础 更改元件图标
  20. 源码安装mariadb10.4.24

热门文章

  1. 之前的账号不见了,@21cn.com的。哪里可以找的回来?
  2. 插件用法--视频播放video.js
  3. 实验三 ORI指令设计实验【计算机组成原理】
  4. echarts tooltip属性加背景图片
  5. 微信公众平台开发(49)物联网硬件设备控制技术
  6. 【Redis学习】:string数据类型详解
  7. 【阿里天猫精灵专题】TB-02 RGB冷暖灯控制
  8. 第五章 多变量线性回归
  9. 03.【python基础二】if判断语句之if-else、elif、if嵌套
  10. T-Bootstrap-day04-组件、boot的定制、scss基础语法和函数