我正在设置Hadoop(0.20.2)。对于初学者,我只是希望它在一台机器上运行 - 我可能在某个时候需要一个集群,但是当我到达那里时我会担心。我得到了我的客户端代码可以连接到作业跟踪器并启动作业的点,但是有一个问题:作业跟踪器只能从它运行的同一台机器上访问。我实际上使用nmap进行了端口扫描,它在从Hadoop机器扫描时显示端口9001打开,并在从其他地方扫描时关闭。
我在三台机器(一台Mac,一台Ubuntu和一台运行在VirtualBox上的Ubuntu VM)上试过这个,它是一样的。他们都没有设置任何防火墙,所以我很确定这是一个Hadoop问题。有什么建议吗?
答案 0 :(得分:8)
在您的hadoop配置文件中,fs.default.name
和mapred.job.tracker
是否指向localhost?
如果是这样,那么Hadoop将只监听环回接口上的端口9000和9001,这是任何其他主机都无法访问的。确保fs.default.name
和mapred.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
验证您的连接是否正常工作!