Exception in thread "main" java.net.ConnectException: Call From ubuntu/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:831) at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:755) at org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1549) at org.apache.hadoop.ipc.Client.call(Client.java:1491) at org.apache.hadoop.ipc.Client.call(Client.java:1388) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:233) at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:118) at com.sun.proxy.$Proxy9.getListing(Unknown Source) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getListing(ClientNamenodeProtocolTranslatorPB.java:671) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:422) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:165) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:157) at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:95) at org.apache.hadoop.io.retry.RetryInvo
时间: 2025-03-30 08:00:16 浏览: 66
### Hadoop 连接异常问题分析
`java.net.ConnectException: Connection refused` 是一种常见的网络错误,通常表示客户端尝试连接到服务器时被拒绝。这种问题可能由多种原因引起,包括配置错误、服务未正常启动或防火墙设置不当。
以下是针对该问题的具体解决方案:
#### 1. 检查主机名解析
如果 `/etc/hosts` 文件中的主机名映射不正确,可能会导致 `Connection refused` 错误。确保 `/etc/hosts` 文件中包含了正确的 IP 地址和主机名映射[^4]。
例如:
```plaintext
127.0.0.1 localhost
192.168.3.1 n01.example.com n01
```
#### 2. 启动 HDFS 和 YARN 服务
确认 Hadoop 的相关服务已成功启动。可以使用以下命令来启动和停止 HDFS 服务[^2]:
```bash
cd /usr/local/hadoop
./sbin/start-dfs.sh
./sbin/stop-dfs.sh
```
对于 YARN 服务,可执行以下命令:
```bash
./sbin/start-yarn.sh
./sbin/stop-yarn.sh
```
可以通过查看进程状态验证服务是否正在运行:
```bash
jps
```
应能看到如下进程(视安装版本而定):
- NameNode
- DataNode
- ResourceManager
- NodeManager
#### 3. 验证端口监听情况
通过检查目标端口的状态,判断是否有服务绑定并监听指定端口。常用工具为 `netstat` 或 `ss` 命令[^3]:
```bash
sudo netstat -tuln | grep <port>
```
或者:
```bash
sudo ss -tuln | grep <port>
```
NameNode 默认监听 9870 端口,DataNode 默认监听 9866 端口。如果没有看到这些端口,则说明对应的服务未正常启动。
#### 4. 修改核心配置文件
检查 Hadoop 的核心配置文件是否存在错误。主要涉及以下几个文件:
- **core-site.xml**
- **hdfs-site.xml**
- **yarn-site.xml**
以 `core-site.xml` 为例,确保设置了正确的 `fs.defaultFS` 属性值[^1]:
```xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
```
#### 5. 排查防火墙规则
某些情况下,防火墙会阻止外部访问特定端口。临时禁用防火墙测试连通性:
```bash
sudo ufw disable
```
或者允许特定端口通过防火墙:
```bash
sudo ufw allow 9870/tcp
sudo ufw allow 9866/tcp
```
#### 6. 日志排查
查阅 Hadoop 的日志文件定位更详细的错误信息。日志路径一般位于 `${HADOOP_HOME}/logs` 下。重点关注以下文件:
- `hadoop-${USER}-namenode-${HOSTNAME}.log`
- `hadoop-${USER}-datanode-${HOSTNAME}.log`
如果有异常堆栈信息,可以根据提示进一步调整配置或修复环境。
---
### 示例代码:重新格式化 NameNode 并重启集群
如果怀疑元数据损坏,可以尝试清理并重新初始化 NameNode 数据目录:
```bash
# 删除现有数据目录
rm -rf /path/to/namenode/data/*
# 格式化 NameNode
hdfs namenode -format
# 重启 HDFS 服务
./sbin/start-dfs.sh
```
---
阅读全文
相关推荐


















