2011-01-31 64 views
4

我正在設置Hadoop(0.20.2)。對於初學者來說,我只是希望它能夠在單臺機器上運行 - 我可能需要某個集羣,但當我到達時,我會擔心這一點。我知道我的客戶端代碼可以連接到作業跟蹤器並啓動作業,但有一個問題:作業跟蹤器只能從運行它的同一臺機器訪問。我實際上用nmap進行了一次端口掃描,並且它顯示了從Hadoop機器掃描時打開的端口9001,並且在從其他地方掃描時關閉。只能從本地主機訪問Hadoop作業跟蹤器

我在三臺機器上(一臺Mac,一臺Ubuntu和一臺在VirtualBox上運行的Ubuntu VM)嘗試了這一點,它是一樣的。他們都沒有設置任何防火牆,所以我很確定這是一個Hadoop問題。有什麼建議麼?

回答

8

在你的hadoop配置文件中,fs.default.namemapred.job.tracker是指localhost?

如果是這樣,那麼Hadoop將僅監聽環回接口上的端口9000和9001,而其他任何主機均無法訪問該端口。確保fs.default.namemapred.job.tracker指的是您的計算機可從外部訪問的主機名。

0

除了上面的回答,我發現,在/etc/hosts在主(運行Ubuntu)有行:

127.0.1.1 master

這意味着在主機上運行nslookup master返回的本地地址 - 這樣儘管在mapred-site.xml中使用master,但我遭遇了同樣的問題。我的解決方案(可能更好)是在我的DNS服務器中創建一個別名,然後使用它。我猜你可能也可以將/etc/hosts中的IP地址更改爲外部IP地址,但我沒有嘗試過 - 我不確定它對其他服務會有什麼影響。

0

請確保您沒有在/etc/hosts文件中雙重列出您的主文件夾。 我只允許主聽上127.0.1.1

127.0.1.1 hostname master 
192.168.x.x hostname master 
192.168.x.x slave-1 
192.168.x.x slave-2 

以上回答問題造成的下面。我將我的/ect/hosts文件更改爲以下文件以使其正常工作。

127.0.1.1 hostname 
192.168.x.x hostname master 
192.168.x.x slave-1 
192.168.x.x slave-2 

使用命令netstat -an | grep :9000來驗證您的連接是否正常工作!

相關問題