场景描述

  • 基于eclipse + hadoop开发过程中,eclipse不能访问远程hadoop服务器文件系统,本地 CMD 窗口 Telnet 失败。
  • 失败提示 1 :
  • 本地Windows CMD窗口提示
telnet remote_hadoop_ip 9000  # 测试端口连通性

# 正在连接x.x.x.x...无法打开到主机的连接。 在端口 9000: 连接失败
  • 失败提示信息 2:
  • eclipse 环境中
1. Call to local_IP/remote_IP:9000 failed on connection exception.

2. Failed on local exception:java.ioIOException;Host Details:local host is "pc_name/local_ip";destination host is "remote_ip":9000

原因分析

  • telnet 不通 9000端口与eclispse 报连接异常属于同一个原因。
  • 问题 1:hosts文件与hadoop xml配置需要保持一致
  • hosts文件
# cat /etc/hosts  # 192.168.1.110 远程服务器IP地址
192.168.1.110
  • hadoop xml配置文件
  • core-site.xml 文件
<property>  
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
  • mapred-site.xml 文件
<property>
<name>mapreduce.jobtracker.address</name>
<value>master:9001</value>
</property>
  • 远程服务器IP:hadoop服务端口
  • 或 远程服务器IP地址,或0.0.0.0
  • 不是 localhost !
  • Call to xx/xx:9000 failed on connection exception( hadoop )_远程服务器

  • 问题 2 : Failed on local exception:java.ioIOException
  • 变更计算机名导致,查看本地计算机名与下列路径配置中是否一致
  • hadoop.http.authentication.kerberos.keytab
  • hadoop.http.authentication.signature.secret.file

常用Linux 命令

netstat -tunlp |grep 9000  # 显示所有端口和所有对应程序,grep管道过滤关键字段

firewall-cmd --state # 查看防火墙状态

systemctl start firewalld.service # 启动防火墙

systemctl stop firewalld.service # 关闭防火墙

firewall-cmd --reload # 重载防火墙

systemctl restart firewalld # 重启防火墙

firewall-cmd --zone=dmz --list-ports # 查看所有开放端口

firewall-cmd --help # 查看帮助

References