跨集群拷贝hdfs

拷贝 A集群的test目录到B集群的test目录

问题1: cause:java.io.IOException: Failed to run job : User root cannot submit applications to queue root.default

原因:权限问题

解决:账号权限问题,切换为创建该文件的用户账号,或提供当前用户权限。

问题2:拒接连接

原因:可能端口号不同引起的,查看端口号与使用协议是否匹配

hadoop distcp hdfs://master:8020/test/

hadoop distcp hftp://master:50070/test/

hadoop distcp webhdfs://master:50070/test/

问题3:java.net.UnknowHostException  集群A 的hdfs路径至集群B的hdfs路径

原因:若直接使用ip,则集群B的host地址书写错误,查看ip与端口号;若使用hostName,则hosts文件未配置。

解决:A集群的hosts文件添加B集群的所有host与ip的映射;

B集群添加A集群的所有host与ip的映射,使用hostName均添加。

问题4:Java.net.SocketTimeoutException: connect timed out

原因:日志显示连接超时, 用的是hftp协议拷贝,需要连接A集群master 的50070端口,而此时连接超时,说明相关权限未开通。或者是hosts文件配置host与ip错误

解决:联系运维开通B集群到A集群所有namenode 的50070端口的防火墙。如果防火墙开通了,还是出现此问题,可以修改A集群的ip tables,将B集群的所有机器加入ip tables。问题5: map 100%之后连接超时Java.net.SocketTimeoutException: connect timed out

原因:map 100% 完成,说明数据读取完毕,写入目标集群失败。

解决:开通B集群到A集群所有datanode的http相关端口(默认为50075)。

posted @ 2019-01-28 15:01  fulse  阅读(1445)  评论(0编辑  收藏  举报