跨集群拷贝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)。