Hadoop distcp命令(一)Hadoop distcp命令(三)
三、命令行选项
标记 | 描述 | 注意事项 |
-p[rbugpcaxt] | r: replication b: block size u: user g: group p: permission c: checksum-type a: ACL x: XAttr t: timestamp | 当使用 |
-i | 忽略错误 | 正如附录中所说的,该选项比默认情况下,对复制的统计结果更准确。该选项同样同样会从失败的拷贝中保留日志,这对于 |
-log <logdir> | 向logdir中写入日志 | DistCp为每个尝试复制的文件保留一份日志,该文件就是map的输出。如果map任务失败了,当该任务重启的时候,原日志文件不会保留。 |
-m<num_maps> | 最大同时复制数 | 确定复制数据的map数量。需要注意的是map数量的增多并不会提高系统的吞吐量。 |
-overwrite | 复写目标路径 | 如果映射失败,并且没有指定-i参数,拆分中的所有文件(包括复制失败的文件)都会被重新复制。如之前所述,该标记会改变源目录复制到目标目录的文件路径,因此使用的时候需要小心。 |
-update | 如果源目录文件和目标目录文件的大小、块大小以及检查数不同就会复写。 | 前文提到过,该命令并不是同步操作。利用源和目标文件的大小、块大小以及检查数作为检验标准,如果这三个标准的值不同,就用源文件替换目标文件。就如前文讨论的,该标记也会改变源路径的路径描述,因此使用的时候需要非常小心。 |
-append | 对名称相同但长度不同的文件进行增量拷贝。 | 如果源文件的长度比目标文件长,就比较公共部分的校验和。如果校验和相等,就使用读和追加的方式拷贝不同的部分。-append选型仅和-update一起使用,没有-skipcrccheck。 |
-f<urilist_url> | 使用urilist_uri中的文件列表作为源列表 | 这个与在命令行列出所有的路径效果是一样的,urilist_uri中的路径应该为绝对路径。 |
-filters | 文件路劲更包含一系列模式字符串,一个字符串一行,与该模式匹配的文件路径将从复制过程中排除。 | 支持由java.tuil.regex.Pattern指定的正则表达式。 |
-delete | 删除存在于目标路径下但是源路径下不存在的文件。 | 删除操作是由FS Shell完成的,因此如果启用了垃圾桶就会用到。 |
-strategy{dynamic|uniformsize} | 选择DistCp的复制策略。 | 默认情况下,使用uniforsize |
-bandwidth | 为每个map任务设置带宽,单位是MB/s | 每个map任务都会被限制只能使用特定的带宽。这个数值也不是绝对的。map任务在复制的过程中会逐渐限制自身带宽的使用量,整个网络的带宽使用会逐渐趋向设定的值。 |
-atomic {-tmp<tmp_dir>} | 在指定的路径下进行原子提交。 | -atomic指定DistCp将元数据拷贝到临时目标位置,然后将数据整体原子式的提交到目标位置。结果就是数据要么整体都在目标位置,要么都不在。可选参数-tmp可以指定临时文件的位置。如果没有指定,就按默认值来。需要注意的是:tmp_dir必须在目标集群上。 |
-mapredSslConf <ssl_conf_file> | 指定要与HSFTP一起使用的SSL配置文件 | 当hsftp协议和源一起使用的时候,可以在配置文件中指定安全相关属性,然后传递给DistCp。ssl_conf_file需要配置在类路径中。 |
-async | 异步运行DistCp,启动hadoop的Job之后立刻退出。 | 会打印Hadoop的Job-id,方便追踪 |
-diff | 使用快照差异报告比较源和目标之间的差异。 | |
-skipcrccheck | 是否跳过源和目标之间的crc校验。 |