栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HDFS 本地编程报错java.net.ConnectException: Call From LAPTOP-LJF22VB3/192.168.56.1 to 192.168

HDFS 本地编程报错java.net.ConnectException: Call From LAPTOP-LJF22VB3/192.168.56.1 to 192.168

通过 Hadoop 本机编程中关于虚拟机和本地主机通信的知识点

起因

本地主机编写相应的代码后运行发现报错,java.net.ConnectException: Call From LAPTOP-LJF22VB3/192.168.56.1 to 192.168,这是因为 Hadoop core-site.xml 其中的 fs.defaultFS 设置为 hdfs://localhost:9000,fs.defaultFS 配置错误,这是导致本机不能访问 Hadoop 9000 端口的根本原因

原因

上面将了根本原因,是因为 fs.defaultFS 配置为 localhost(127.0.0.1),这导致虚拟机上的 9000 端口只能由虚拟机访问,而本机在 IDEA 上调用时无法访问虚拟机的该端口,即使虚拟机的 ip 和本地主机是同一网段

此时本地主机是 192.168.43.1,而虚拟机的 ip 是 192.168.43.18,两台机子是同一网段

通过 netstat -tupnl 命令可以查看端口使用详情,下面有一张 Hadoop 运行时的网络图片

由上图可以看见 9000 端口只有虚拟机可以访问

解决方法

其实解决方法已经很明显,只要让 9000 端口能让本地主机访问就行了,所以解决方法有两个

  1. core-site.xml,直接配置你当前的 IP,不放过需要注意的是你这个 IP 不能经常变,本地主机一旦换了个网络,IP 就会随机分配一个,所以这个方案,只适用与网络固定的时候,比如你的本地主机只用一条网线或者一台路由器
  2. /etc/hosts 修改,core-site.xml 设置一个你中意的名字,比如 hadoop01,然后在 hosts 文件中添加映射,也就是路由表中添加映射(涉及到一点点计网知识),这样 hadoop 在启动时就会去路由表里面找,并映射相应的 IP,这个时候你换个网络的时候修改一下 hosts 文件就又能访问到虚拟机里面的 9000 端口,正常的在本机进行 Hadoop 编程,core-site.xml 只需要配置一次,不需要再去修改 core-site.xml,并且重新启用,这个方法适合笔记本电脑,连 WIFI、热点这种

第一种方法,解决方案


    
        hadoop.tmp.dir
        file:/usr/local/hadoop/tmp
        Abase for other temporary directories.
    
    
        fs.defaultFS
        hdfs://192.168.43.18:9000
    

第二种方法,解决方法


    
        hadoop.tmp.dir
        file:/usr/local/hadoop/tmp
        Abase for other temporary directories.
    
    
        fs.defaultFS
        hdfs://hadoop01:9000
    

vi /etc/hosts

192.168.43.18   hadoop01
127.0.0.1       localhost localhost.localdomain localhost4 localhost4.localdomain4
::1             localhost localhost.localdomain localhost4 localhost4.localdomain4 

可以使用 curl 192.168.43.18:9000 或者 telnet 192.168.43.18 9000 测试本地主机是否能和虚拟机通信

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582190.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号