美文网首页
Hadoop命令之distcp参考

Hadoop命令之distcp参考

作者: liuzx32 | 来源:发表于2019-01-15 20:43 被阅读20次

    distcp 命令是用于集群内部或者集群之间拷贝数据的常用命令。

    #顾名思义: dist即分布式, distcp即分布式拷贝。

      hadoop distcp [选项]  src_url  dest_url  

    #常用选项

    -m: 表示启用多少map

    -delete: 删除已经存在的目标文件,不会删除源文件。这个删除是通过FS Shell实现的。所以如果垃圾回收机制启动的话,删除的目标文件会进入trash。

    -i: 忽略失败。这个选项会比默认情况提供关于拷贝的更精确的统计, 同时它还将保留失败拷贝操作的日志,这些日志信息可以用于调试。最后,如果一个map失败了,但并没完成所有分块任务的尝试,这不会导致整个作业的失败。

    -overwrite: 覆盖目标。如果一个map失败并且没有使用-i选项,不仅仅那些拷贝失败的文件,这个分块任务中的所有文件都会被重新拷贝。 所以这就是为什么要使用-i参数。

    #新版本可以指定不同集群之间的拷贝。

    1. 指定不同集群的用户名密码

       distcp -m 300 -su <user,paswd>  -du <user,paswd> src_url dest_url  

    2. 本地hadoop客户端需要设置hadoop_site.xml 中的各种信息 fs.default.name 

        目前猜测是因为distcp是要启动map任务的所以需要知道namenode, jobtracker等信息。

    #其他选项参考

    -p[rbugp]       Preserve status, 
                           r: replication number
                           b: block size
                           u: user
                           g: group
                           p: permission
                           -p alone is equivalent to -prbugp
    -p选项修改次数不会被保留。并且当指定 -update 时,更新的状态不会 被同步,除非文件大小不同(比如文件被重新创建)。

    -i                     Ignore failures, 
    -i这个选项会比默认情况提供关于拷贝的更精确的统计, 同时它还将保留失败拷贝操作的日志,这些日志信息可以用于调试。最后,如果一个map失败了,但并没完成所有分块任务的尝试,这不会导致整个作业的失败。

    -log <logdir>          Write logs to <logdir>
    -log选项为每个文件的每次尝试拷贝操作都记录日志,并把日志作为map的输出。 如果一个map失败了,当重新执行时这个日志不会被保留。

    -m <num_maps>          Maximum number of simultaneous copies
    -m选项指定了拷贝数据时map的数目。请注意并不是map数越多吞吐量越大。

    -overwrite             Overwrite destination
    -overwrite选项如果一个map失败并且没有使用-i选项,不仅仅那些拷贝失败的文件,这个分块任务中的所有文件都会被重新拷贝。 就像下面提到的,它会改变生成目标路径的语义,所以 用户要小心使用这个选项。

    -update                Overwrite if src size different from dst size
    -update选项像之前提到的,这不是"同步"操作。 执行覆盖的唯一标准是源文件和目标文件大小是否相同;如果不同,则源文件替换目标文件。 像 下面提到的,它也改变生成目标路径的语义, 用户使用要小心。

    -f <urilist_uri>       Use list at <urilist_uri> as src list
    -f选项这等价于把所有文件名列在命令行中。 urilist_uri 列表应该是完整合法的URI。

    -filelimit <n>         Limit the total number of files to be <= n

    -sizelimit <n>         Limit the total size to be <= n bytes

    -delete                Delete the files existing in the dst but not in src

    -mapredSslConf <f>     Filename of SSL configuration for mapper task

    #

    相关文章

      网友评论

          本文标题:Hadoop命令之distcp参考

          本文链接:https://www.haomeiwen.com/subject/cjrudqtx.html