当指定地址有一台计算机,但没有程序侦听客户端正在使用的特定 TCP 端口时,您会收到连接拒绝异常 - 并且没有防火墙阻止静默丢弃 TCP 连接请求。如果您不知道什么是TCP连接请求,请参阅规范。
除非任一端出现配置错误,否则常见的原因是Hadoop服务未运行。
当集群被关闭时,这种堆栈跟踪非常常见 - 因为此时Hadoop服务正在整个集群中被拆除,这对于那些尚未关闭的服务和应用程序是可见的。在群集关闭期间看到此错误消息无需担心。
如果应用程序或群集不工作,并且此消息出现在日志中,则情况更严重。
异常文本声明连接失败的主机名和端口。端口可用于标识服务。例如,端口 9000 是 HDFS 端口。请查阅 Ambari 端口参考和/或 Hadoop 管理工具供应商的参考。
- 检查客户端使用的主机名是否正确。如果它在Hadoop配置选项中:仔细检查它,尝试手动执行ping。
- 检查客户端尝试与之通信的主机名的 IP 地址是否正确。
- 确保异常中的目标地址不是 0.0.0.0 - 这意味着您实际上尚未为客户端配置该服务的真实地址,而是选取服务器端属性,告诉它侦听每个端口的连接。
- 如果错误消息指出远程服务位于“127.0.0.1”或“localhost”上,则表示配置文件告诉客户端该服务位于本地服务器上。如果您的客户端尝试与远程系统通信,则您的配置已损坏。
- 检查您的主机名是否没有映射到 127.0.0.1 或 127.0.1.1 的条目(Ubuntu 因此臭名昭著)。
/etc/hosts
- 检查客户端尝试使用的端口,使用服务器提供服务的匹配项。该命令在那里很有用。
netstat
- 在服务器上,尝试 查看端口是否在那里打开。
telnet localhost <port>
- 在客户端上,尝试 以查看端口是否可以远程访问。
telnet <server> <port>
- 尝试从其他计算机连接到服务器/端口,以查看它是否只是单个客户端行为异常。
- 如果客户端和服务器位于不同的子域中,则可能是服务的配置仅发布基本主机名,而不是完全限定的域名。不同子域中的客户端可能会无意中尝试绑定到本地子域中的主机,但会失败。
- 如果您使用的是来自第三方的基于 Hadoop 的产品,请使用供应商提供的支持渠道。
- 请不要提交与您的问题相关的错误报告,因为它们将作为无效关闭
另请参阅服务器溢出
这些都不是Hadoop问题,它们是Hadoop,主机,网络和防火墙配置问题。由于它是您的集群,因此只有您可以发现并跟踪问题。