特定地址的机器,在TCP的端口没有被占用,也没有防火墙切断TCP连接请求的情况下,运行程序报出 ConnectionRefused Exception.
除了可能的配置错误,否则通常的原因是Hadoop服务没有运行.
栈跟踪在集群关闭时是非常常见的,因为那时Hadoop服务在集群中拆除,那些尚未关闭的的服务和应用程序来说,这是可见的.当集群关闭的时候看到这个错误信息不用担心.
如果程序或集群没有工作,而ConnectRefused错误信息出现在日志中,情况则更加严重.
异常文本声明的是连接失败的主机名和端口.这个端口能用于标识服务.例如,9000是HFFS的端口.查阅 Ambari port reference,Hadoop管理工具供应商.
-
检查客户端主机名是否正确,如果在Hadoop的配置选项中,仔细检查,手动尝试ping操作;
-
检查客户端尝试连接的主机的IP地址是否正确/
-
确认在报错的目的地址不是0.0.0.0-这意味着你实际上没有为服务配置有真的地址的客户端,相反,它获取服务端属性,并告诉他为连接监听每一个端口.
-
如果错误信息显示远程服务运行在’127.0.0.1"或’localhost"上,这就意味着配置文件告诉客户端服务运行在本地服务器上.如果你的客户端试着和远程系统通信,那么你的配置就是错误.
-
检查这在/etc/hosts文件中没有键值对是127.0.0.1或127.0.1.1映射到你的主机名上.(Ubuntu因此引至恶名)
-
检查客户端尝试连接的服务器的端口是正在提供服务运行着.通常用netstat检查.
-
在服务器端,用 telnet localhost port 检查端口是否开放.
-
在客户端,用telnet server port 检查端口是否可以远程连接
-
在不同客户机器上尝试远程连接(第8条),检查是否是单机故障
-
如果你的客户端和服务器实在不同的子域下,可能服务器配置仅仅开放了基本的主机名,而不是完全限定的域名.在不同的子域的客户端能在无意中绑定主机在本地的子域下,接着就会出现失败信息.
-
如果你使用的是第三方提供的Hadoop的基本产品,请使用由服务商提供的支持渠道.
-
请不要传送你的错误报告,因为他们将被标志为无效,并关闭.
另外也可查阅Server Overflow
发生的问题不仅是Hadoop的单方面问题,可能是hadoop,主机,网络,和防火墙配置的问题.
当你的集群发生此类问题时,只有你的能找出问题并跟踪解决它.