今天有人给我提了一个问题,说是在部署hadoop的时候无法启动namnode,报错信息是端口被占用。我拿过服务器来上去看了一下,通过查看log,发现确实报了一个:
Port in use: master:50070
这样的一个错误。但是我继续往下翻log的时候,发现导致这个报错的原因是:
Cannot assign requested address
起初我认为一定是他无意中已经启动了namenode,导致了50070端口的占用,于是百度一番,得到的解决方案无非就是ps列出来占用端口的进程,或者
netstat -lntp
查看那些进程占据了哪些端口,然后kill掉。可是两种思路都试过了都不见效,于是我认定了原因就在后面真正的报错信息上。再次百度一番,发现了这篇文章:
namenode启动失败 。 : Cannot assign requested address
于是仔细咨询了提问者,原来他的服务器真的是VPS,然后我用ifconfig查到了inet的地址:
root@master:~# ifconfig
eth0 Link encap:Ethernet HWaddr 52:54:00:**:**:**
inet addr:10.105.***.*** Bcast:10.105.255.255 Mask:255.255.***.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:706244 errors:0 dropped:0 overruns:0 frame:0
TX packets:365273 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:403794983 (403.7 MB) TX bytes:44644630 (44.6 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:8700 errors:0 dropped:0 overruns:0 frame:0
TX packets:8700 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:1678851 (1.6 MB) TX bytes:1678851 (1.6 MB)
修改
/etc/hosts
把本机的hostname解析条目的ip改为inet的ip,slave的ip仍为公网ip
10.105.***.*** master
重新部署配置hadoop,使用公网ip访问namenode,成功。
网友评论