报错 Exception in thread "main"java.net.SocketTimeoutException: Call to hadoop/192.168.80.110:9000 failed onsocket timeout exception: java.net.SocketTimeoutException: 20000 millis timeoutwhile waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pendingremote=hadoop/192.168.80.110:9000]
一、先检查下master node上的9000端口是否开启了,可以通过telnet的方式测试。
telnet 192.168.80.110
Connection refused Connection refused原因有两个
一个是被防火墙拦截 ---关闭防火墙
另一个原因是该端口的监听地址为本机(127.0.0.1),如果这样的话,只有从本机发起的对端口的访问被允许,而外部主机访问被拒绝。
可以通过“netstat -anp | grep 9000”命令查看该端口的监听地址:
有上图可知,9000端口监听的地址为本地地址(127.0.0.1)
解决方法:监听地址为本机地址则修改其监听地址为真是ip地址(如192.168.80.110)。
在hadoop中,可以更改本机地址(eg:localhost——>hadoop)
Vi /etc/hosts配置文件中加入主机192.168.8.119 hadoop的映射关系
修改core-site.xml中fs.default.name的值为"hdfs://hadoop:9000"
删除hadooptmp/下所有信息重新格式化
成功后启动hadoop
再次输入netstat -anp | grep 9000出现下面界面表示9000端口监听的地址为真实ip地址
二、启用Windows telnet功能
Cmd在输入telnet 如果显示不是内部命令执行以下步骤
控制面板-查看方式-类别-单击程序-启用或关闭Windows功能-勾选Telnet服务器、Telnet客户端,单击确定
打开命令提示符,输入telnet,弹出欢迎提示,telnet启用成功