Windows环境下Hadoop尝试连接0.0.0.0:10020失败的原因是什么?
解决Hadoop全量应用访问0.0.0.0:10020失败的问题
你这是踩了个典型的Hadoop配置误区——0.0.0.0:10020是JobHistory Server的默认端口,这个问题和DFS配置完全不相关,之前改<value>hdfs://0.0.0.0</value>相当于找错了方向,咱们一步步来搞定:
1. 先确认JobHistory Server是否在运行
打开Windows命令提示符(CMD),执行:
jps
如果输出里没有JobHistoryServer进程,说明这个服务根本没启动,这是最常见的诱因。手动启动它:
mr-jobhistory-daemon.cmd start historyserver
2. 修正MapReduce的JobHistory核心配置
问题出在mapred-site.xml文件(不是hdfs-site.xml!),你需要添加或修改以下两个配置项:
<property> <name>mapreduce.jobhistory.address</name> <!-- 改成你的本机IP/主机名,比如localhost或者你的实际主机名,别用0.0.0.0 --> <value>localhost:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>localhost:19888</value> </property>
为啥不能用0.0.0.0?因为0.0.0.0是服务端监听所有网卡的配置,但客户端需要明确的目标地址才能发起请求,用它会导致客户端无法正确解析连接地址。
3. 重启服务并验证有效性
- 先停掉所有Hadoop服务:
stop-all.cmd - 重新启动集群:
start-all.cmd - 再次启动JobHistory Server:
mr-jobhistory-daemon.cmd start historyserver
验证步骤:
- 再执行
jps,确认JobHistoryServer进程存在 - 打开浏览器访问
http://localhost:19888,能看到JobHistory的Web界面说明服务正常 - 运行你的全量应用,应该不会再出现0.0.0.0:10020的访问异常了
4. 额外排查:防火墙与Hosts配置
- 确保Windows防火墙开放了10020和19888端口,避免请求被拦截
- 检查
C:\Windows\System32\drivers\etc\hosts文件,确认你的主机名和127.0.0.1有正确映射,比如:127.0.0.1 localhost 192.168.x.x 你的主机名
内容的提问来源于stack exchange,提问作者Dims
相关产品推荐
相关产品推荐

