Hadoop namenode不会在IP之外侦听

时间:2017-03-16 00:31:07

标签: java hadoop networking hdfs firewall

我有一台3台机器的简单hadoop集群。一个主人和两个奴隶。所有这些都运行了我下载there的最新简约版CentOS。

我的所有机器都有相同的主机文件:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.101  master
192.168.56.102  slave1
192.168.56.103  slave2

core-site.xml文件配置如下:( namenode应该侦听端口9000)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000/</value>
</property>
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
</configuration>

从主服务器启动hdfs并检查datanodes / slave的日志时我发现数据节点无法连接到namenode

Retrying connect to server: master/192.168.56.101:9000. Already tried 0 time(s).

进一步检查后,如果我尝试从namenode本身连接到端口9000,则只能访问端口9000。

[root@HadoopMaster conf]# sudo netstat -tulpn | grep :9000
tcp6       0      0 192.168.56.101:9000     :::*                    LISTEN      11055/java

尝试telnet master 9000仅从主控主机成功。奴隶会收到以下错误:

[root@Slave1 logs]# telnet master 9000
Trying 192.168.56.101...
telnet: connect to address 192.168.56.101: No route to host

但相反,他们可以很好地连接到端口22

[root@Slave1 logs]# telnet master 22
Trying 192.168.56.101...
Connected to master.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1

所以这必须是一个IP绑定问题。 我到处寻找,找不到可行的答案。通过在core-site.xml文件中使用完全合格的域名解决了我的类似问题,但我没有成功。

顺便说一句,我也禁用了iptables,之前我的所有主端口都打开了我的奴隶IP。没有成功。

如果你找到了答案,我肯定想给你发送一个美味的虚拟饼干;)

2 个答案:

答案 0 :(得分:0)

我刚刚意识到CentOS的默认防火墙不是iptables而是firewalld。 正确配置此防火墙后,我设法解决了我的问题!

为什么安装了iptables但没有使用,这是一个谜。 男孩,我更喜欢Debian家族。

答案 1 :(得分:-1)

如果您在VM VirtualBox的多个实例中运行这些VM看起来很自然,即使它们位于同一网络上,也无法看到对方。

选中virtualbox manual以正确配置网络,您还可以查看此answer