2017-03-16 90 views
0

我有一個簡單的3臺機器的hadoop集羣。一個主人和兩個奴隸。他們都在運行最新的CentOS最低版本,我下載了thereHadoop namenode不聽外部IP

我所有的機器都在同一主機文件:

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 

核心-site.xml文件的配置如下:(名稱節點應該偵聽端口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,並檢查datanode/slave的日誌我注意到datanode無法連接到namenode。如果我試圖從名稱節點本身連接到它

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

進一步檢查,它看起來像端口9000之後,才能訪問。

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

嘗試一個telnet master 9000只有從主主機成功。奴隸得到以下錯誤:

[[email protected] logs]# telnet master 9000 
Trying 192.168.56.101... 
telnet: connect to address 192.168.56.101: No route to host 

但相反的,他們可以連接到端口22就好了

[[email protected] 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。沒有成功。

如果你找到答案,我肯定會想送你一個美味的虛擬餅乾;)

回答

0

我才意識到的CentOS默認的防火牆沒有iptables的,但firewalld。 正確配置此防火牆後,我設法解決了我的問題!

爲什麼iptables安裝但沒有使用,這是一個謎。 男孩,我更喜歡Debian家族。

-1

如果你在一個很自然VM VirtualBox的幾個實例中運行的虛擬機,即使他們是在同網絡他們看不到對方。

檢查virtualbox manual正確地配置網絡,你也可以檢查此answer

+0

我的網絡配置很好。每臺虛擬機在唯一主機網絡中具有不同的IP。而且我有一個NAT接口以及通過我的真實計算機訪問Internet。這只是hadoop開始一個錯誤的up綁定服務。 –