Hadoop作业跟踪器只能从localhost访问

时间:2011-01-31 20:36:46

标签: hadoop

我正在设置Hadoop(0.20.2)。对于初学者,我只是希望它在一台机器上运行 - 我可能在某个时候需要一个集群,但是当我到达那里时我会担心。我得到了我的客户端代码可以连接到作业跟踪器并启动作业的点,但是有一个问题:作业跟踪器只能从它运行的同一台机器上访问。我实际上使用nmap进行了端口扫描,它在从Hadoop机器扫描时显示端口9001打开,并在从其他地方扫描时关闭。

我在三台机器(一台Mac,一台Ubuntu和一台运行在VirtualBox上的Ubuntu VM)上试过这个,它是一样的。他们都没有设置任何防火墙,所以我很确定这是一个Hadoop问题。有什么建议吗?

3 个答案:

答案 0 :(得分:8)

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

如果是这样,那么Hadoop将只监听环回接口上的端口9000和9001,这是任何其他主机都无法访问的。确保fs.default.namemapred.job.tracker引用您计算机的外部可访问主机名。

答案 1 :(得分:0)

除了上面的回答,我发现在主人(运行ubuntu)上的/etc/hosts中有一行:

127.0.1.1 master

这意味着在主服务器上运行nslookup master会返回一个本地地址 - 所以尽管在master中使用mapred-site.xml我遇到了同样的问题。我的解决方案(可能更好)是在我的DNS服务器中创建别名并使用它。我想你可能也可以将/etc/hosts中的IP地址更改为外部IP地址,但我还没有尝试过这个 - 我不确定它会对其他服务产生什么影响。

答案 2 :(得分: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验证您的连接是否正常工作!