Hadoop啟動時遇見Port in use: master:50070 和Cannot assign requested address解決辦法
阿新 • • 發佈:2019-01-14
最接買了兩個便宜的伺服器,本想搭建一個Hdoop叢集,可是在搭建的時候遇到了很多的問題,例如:
namenode不能啟動,datanode能正常啟動
在master上使用jps檢視啟動狀態:
[email protected]:/Hadoop/hadoop-3.1.1/logs# jps
38416 NodeManager
37946 DataNode
38619 Jps
檢視hadoop安裝目錄log資料夾下的namenode啟動日誌提示:
java.net.BindException: Port in use: master:50070 和 java.net.BindException: Port in use: master:50070
最開始本以為是端口占用的問題,於是乎去百度了很多,大部分都是說使用:
lsof -i:50070
來檢視佔用埠的程序,然後kill掉。
但是使用後卻沒有發現佔用埠的程序。。。
然後我又以為是配置檔案的問題,最後折磨了我一天,最後終於找到了問題所在:
首先看/etc/hosts這個檔案:
fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts 172.16.0.6 instance-cqxyyrb2 instance-cqxyyrb2.novalocal #這是master的公網ip 106.***.***.66 master #這是slave1的公網ip 120.***.***.237 slave1 127.0.0.1 localhost root localhost4 localhost4.localdomain4 ::1 localhost root localhost6 localhost6.localdomain6
hosts裡面的master使用的是公網ip,於是我試了試將其換成內網ip:
首先使用ifconfig檢視內網ip
[email protected]:/Hadoop/hadoop-3.1.1/logs# ifconfig ens3 Link encap:Ethernet HWaddr fa:16:3e:68:a9:36 inet addr:172.16.0.6 Bcast:172.16.15.255 Mask:255.255.240.0 inet6 addr: fe80::f816:3eff:fe68:a936/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:182328 errors:0 dropped:0 overruns:0 frame:0 TX packets:179699 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:18446369 (18.4 MB) TX bytes:32539342 (32.5 MB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:32097 errors:0 dropped:0 overruns:0 frame:0 TX packets:32097 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:18132816 (18.1 MB) TX bytes:18132816 (18.1 MB)
由此得到內網ip為:172.16.0.6,更改master為內網ip:
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
172.16.0.6 instance-cqxyyrb2 instance-cqxyyrb2.novalocal
#master使用內網ip
172.16.0.6 master
#slave1使用公網ip
120.***.***.237 slave1
127.0.0.1 localhost root localhost4 localhost4.localdomain4
::1 localhost root localhost6 localhost6.localdomain6
最後最後試了下啟動成功啦:
[email protected]:/Hadoop/hadoop-3.1.1/logs# start-all.sh
Starting namenodes on [master]
Starting datanodes
Starting secondary namenodes [slave1]
Starting resourcemanager
Starting nodemanagers
[email protected]:/Hadoop/hadoop-3.1.1/logs# jps
39712 NameNode
39862 DataNode
40233 ResourceManager
40377 NodeManager
40730 Jps
[email protected]:/Hadoop/hadoop-3.1.1/logs#
這裡只需要修改master伺服器上的hosts檔案,slave1節點上可以不用修改。
原來hosts內master的ip應該使用內網ip,外網ip是不能啟動的,原因我暫時沒想明白,有知道的同學可以留言告之,謝謝。