问题
在本地虚拟机有一套hadoop集群,阿里云主机有一套集群。
本地IDEA开发工具写的MapReduce调试案例,可以在直接连接本地虚拟机集群运行跑,但是连接云主机集群报错,连接datanode超时!
报错信息如下:
org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/172.24.26.251:9866]
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:534) ~[hadoop-common-3.1.3.jar:?]
at org.apache.hadoop.hdfs.DataStreamer.createSocketForPipeline(DataStreamer.java:253) ~[hadoop-hdfs-client-3.1.3.jar:?]
at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1725) [hadoop-hdfs-client-3.1.3.jar:?]
at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1679) [hadoop-hdfs-client-3.1.3.jar:?]
at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:716) [hadoop-hdfs-client-3.1.3.jar:?]

本地IDEA调试MapReduce时,连接阿里云主机上的Hadoop集群出现datanode超时问题。原因是nameNode返回的dataNode IP为内网IP,导致客户端无法访问。解决办法是在`hdfs-site.xml`中配置datanode的client通信使用域名,并在代码中显式声明该配置,问题得以解决。
最低0.47元/天 解锁文章
311

被折叠的 条评论
为什么被折叠?



