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

[经验分享] hadoop集群间的hdfs文件拷贝

[复制链接]

尚未签到

发表于 2017-12-17 08:17:14 | 显示全部楼层 |阅读模式
1、背景
  部门有个需求,在网络互通的情况下,把现有的hadoop集群(未做Kerberos认证,集群名为:bd-stg-hadoop)的一些hdfs文件拷贝到新的hadoop集群(做了Kerberos认证,集群名为zp-tt-hadoop)
  如果是两个都没有做安全认证的集群互传文件,使用distcp可以很快实现。在当前情况下,情况可能要复杂一些。通过查阅资料,在cdh的官网上竟然有这么神奇的一个参数可以解决这样的需求。传送门:http://www.cloudera.com/documentation/enterprise/5-5-x/topics/cdh_admin_distcp_secure_insecure.html

2、实现

2.1 Copying Data between two Insecure cluster
  两个都没有做安全认证的集群,通常方法如下:
$ hadoop distcp hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo  也可以通过webhdfs的方式:
$ hadoop distcp webhdfs://nn1:8020/foo/bar  webhdfs://nn2:8020/bar/foo  对于不同Hadoop版本间的拷贝,用户应该使用HftpFileSystem。 这是一个只读文件系统,所以DistCp必须运行在目标端集群上。 源的格式是
hftp://<dfs.http.address>/<path> (默认情况dfs.http.address是 <namenode>:50070)。  distcp的一些参数如下:
-i:忽略失败(不建议开启)  
-log:记录日志到 <logdir>
  
-m:同时拷贝的最大数目(指定了拷贝数据时map的数目。请注意并不是map数越多吞吐量越大。)
  
-overwrite:覆盖目标(如果一个map失败并且没有使用-i选项,不仅仅那些拷贝失败的文件,这个分块任务中的所有文件都会被重新拷贝。 就像下面提到的,它会改变生成目标路径的语义,所以 用户要小心使用这个选项。)
  
-update:如果源和目标的大小不一样则进行覆盖
  
-f:使用<urilist_uri> 作为源文件列表

2.2 Copying Data between a Secure and an Insecure
  在secure-cluster上的core-site.xml配置文件中添加:
<property>  <name>ipc.client.fallback-to-simple-auth-allowed</name>
  <value>true</value>
  
</property>
  然后在secure-cluster执行如下命令:
distcp webhdfs://insecureCluster webhdfs://secureCluster  
distcp webhdfs://secureCluster webhdfs://insecureCluster
  在我实际操作过程中,两个集群hdfs都有做ha,使用上面的命令会报错:
16/09/27 14:47:52 ERROR tools.DistCp: Exception encountered  
java.lang.IllegalArgumentException: java.net.UnknownHostException: bd-stg-hadoop
  at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:374)
  at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:392)
  at org.apache.hadoop.hdfs.web.WebHdfsFileSystem.initialize(WebHdfsFileSystem.java:167)
  at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2643)
  at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:93)
  at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2680)
  at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2662)
  at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:379)
  at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)
  at org.apache.hadoop.tools.GlobbedCopyListing.doBuildListing(GlobbedCopyListing.java:76)
  at org.apache.hadoop.tools.CopyListing.buildListing(CopyListing.java:86)
  at org.apache.hadoop.tools.DistCp.createInputFileListing(DistCp.java:365)
  at org.apache.hadoop.tools.DistCp.execute(DistCp.java:171)
  at org.apache.hadoop.tools.DistCp.run(DistCp.java:122)
  at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
  at org.apache.hadoop.tools.DistCp.main(DistCp.java:429)
  
Caused by: java.net.UnknownHostException: bd-stg-hadoop
  解决如下:
  把bd-stg-hadoop集群名字改成了active-namenode的host再进行操作,如下:
$ hadoop distcp webhdfs://bd-stg-namenode-138/tmp/hivebackup/app/app_stg_session webhdfs://zp-tt-hadoop:8020/tmp/hivebackup/app/app_stg_session  成功执行后, 可以发现原理就是启动一个只有map的MapReduce作业来实现两个集群间的数据复制。

2.3 Copying Data between two Secure cluster
  这种情况相对有些复杂了,需要Kerberos做跨域的配置。本文暂不研究讨论。

运维网声明 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-424928-1-1.html 上篇帖子: 大数据~说说Hadoop 下篇帖子: scala+hadoop+spark环境搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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