踩坑记录!!!!
问题描述:
虚拟机上的linux固定IP后无法在物理机使用JAVA API连接HDFS,报错如下:
java.net.ConnectException: Call From xxx to localhost:8020 failed on connection exception: java.net.ConnectException: Connection refused
找教程瞎调了几次又变成这样:
Exception in thread “main” java.net.ConnectException: Call From DESKTOP-API5IFV/192.168.5.1 to hadoop:8020 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
TNND
1.首先要确保linux的防火墙是关闭的,如何永久关闭防火墙查看我之前的博客
2.检查 core-site.xml确保是8020端口,并把名称改为你的IP地址
<configuration>
<property>
<value>hdfs://192.168.19.3:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/japson/app/tmp</value>
</property>
</configuration>
补充:连接成功了,若想使用你的主机名登录需要在物理机建立映射关系,linux系统同理。
注意
如果要使用主机名需要:
- 确保物理上即windows上修改了hosts文件,主机名对应那个ip
- 修改虚拟机上的etc/hosts文件对应的主机名和ip关系如下:
- hadoop的core-site.xml中涉及到localhost的改为主机名或者ip都行
有一个问题就是ip地址变化了,那么就需要改变2个地方:
1.java中的URI
2.hadoop的core-site.xml