阿里云服务器下hadoop 部分端口无法访问的问题

环境

  1. 服务器是阿里云的ECS服务器
  2. 安装了ubuntu14.04 linux系统
  3. 搭建了hadoop2.7.3的集群
  4. hadoop集群中主机名分别为Master、Slave1、Slave2
  5. 配置了/etc/hosts 文件,修改主机名和服务器ip映射

遇到的问题

  1. 在外网是可以访问http://Master:50070,
    无法访问http://Master:8088/cluster

  2. java eclipse 远程访问hadoop,失败,通过百度,谷歌验证配置什么的都正确,错误内容如下

Error:Call From DESKTOP-XXPC/192.168.0.103 to Master:9000 failed on connection exception:java.net.ConnectException:Connection refused:no further information;
  1. telnet Master:9000不通

总而言之,hadoop集群中我可以访问部分端口。

解决方案

一开始以为是linux防火墙的问题(不过关闭防火墙也是个解决方案,大家也可以尝试下),但是我关闭了还是无法解决上面的问题。

其实问题出在了hosts文件关于主机名和ip映射配置的上面。
阿里云ECS主机提供了2个ip,一个是外网的ip,一个是内网的ip
我一开始的hosts文件用的是内网的ip地址,ip映射如下:

10.171.xxx.xxx Master 
10.163.xxx.xxx Salve1
10.165.xxx.xxx Salve2

然后修改成外网ip以后上面的问题就解决了,ip映射如下:

112.126.xxx.xxx Master
125.112.xxx.xxx Slave1
124.112.xxx.xxx Slave2

小结:我们hosts映射的ip是阿里云内网ip,我们在hadoop的配置文件中写的是主机名,比如yarn-site.xml 中yarn.resourcemanager.webapp.address的value为Master:8088,这里规定了我们访问hadoop8088端口时走的是Master对应的内网ip,但是实际访问中,我们是用的Master的公网ip的8088端口,自然就无法从公网访问hadoop的8088端口了(在内网没问题),所以我们把主机映射的iP都改成主机的公网IP,所有的问题就迎刃而解了。

你可能感兴趣的:(阿里云服务器下hadoop 部分端口无法访问的问题)