设为首页 收藏本站
查看: 1256|回复: 0

hadoop深入研究:(四)——distcp

[复制链接]

尚未签到

发表于 2015-11-11 11:43:57 | 显示全部楼层 |阅读模式
  转载请注明出处:http://blog.iyunv.com/lastsweetop/article/details/9086695
  
我们前几篇文章讲的都是单线程的操作,如果要并行拷贝很多文件,hadoop提供了一个小工具distcp,最常见的用法就是在两个hadoop集群间拷贝文件,帮助文档很详尽,这里就不一一解释了,开发环境没有两个集群,用同一集群演示:hadoop distcp hdfs://namenode:9000/user/hadoop/input hdfs://namenode:9000/user/hadoop/input1完整的options列表:distcp [OPTIONS] <srcurl>* <desturl>
OPTIONS:
-p[rbugp]              Preserve status
r: replication number
b: block size
u: user
g: group
p: permission
-p alone is equivalent to -prbugp
-i                     Ignore failures
-log <logdir>          Write logs to <logdir>
-m <num_maps>          Maximum number of simultaneous copies
-overwrite             Overwrite destination
-update                Overwrite if src size different from dst size
-skipcrccheck          Do not use CRC check to determine if src is
different from dest. Relevant only if -update
is specified
-f <urilist_uri>       Use list at <urilist_uri> as src list
-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

看下distcp的执行结果你会发现,distcp是个MapReduce任务,但只有map没有reducer。13/06/18 10:59:19 INFO tools.DistCp: srcPaths=[hftp://namenode:50070/user/hadoop/input]
13/06/18 10:59:19 INFO tools.DistCp: destPath=hdfs://namenode:9000/user/hadoop/input1
13/06/18 10:59:20 INFO tools.DistCp: hdfs://namenode:9000/user/hadoop/input1 does not exist.
13/06/18 10:59:20 INFO tools.DistCp: sourcePathsCount=3
13/06/18 10:59:20 INFO tools.DistCp: filesToCopyCount=2
13/06/18 10:59:20 INFO tools.DistCp: bytesToCopyCount=1.7m
13/06/18 10:59:20 INFO mapred.JobClient: Running job: job_201306131134_0009
13/06/18 10:59:21 INFO mapred.JobClient:  map 0% reduce 0%
13/06/18 10:59:35 INFO mapred.JobClient:  map 100% reduce 0%distcp把一大堆文件平均分摊开交给map去执行每个文件单独一个map任务。那么默认会分成几个map合适呢?首先按256mb平均分,如果总大小低于256mb,distcp只会分配一个map。但如果平分得结果出现节点得map数大于20的情况,每个节点的map数就会按20算,看下流程图: DSC0000.jpg
你可以通过-m手动设置,如果为了hdfs的均衡,最好是将maps设的多一些,将block分摊开来。
如果两个集群间的版本不一致,那么使用hdfs可能就会产生错误,因为rpc系统不兼容。那么这时候你可以使用基于http协议的hftp协议,但目标地址还必须是hdfs的,象这样:hadoop distcp hftp://namenode:50070/user/hadoop/input hdfs://namenode:9000/user/hadoop/input1
推荐用hftp的替代协议webhdfs,源地址和目标地址都可以使用webhdfs,可以完全兼容hadoop distcp webhdfs://namenode:50070/user/hadoop/input webhdfs://namenode:50070/user/hadoop/input1
感谢Tom White,此文章大部分来自于大神的definitive guide,奈何中文版翻译太烂,就在英文原版的基础上和官方的一些文档加入一些自己的理解。全当是读书笔记吧,画蛇添足之举。
版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137860-1-1.html 上篇帖子: hadoop系列:zookeeper(2)——zookeeper核心原理(选举) 下篇帖子: hadoop jar **.jar 与java -classpath **.jar运行mapreduce
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表