環(huán)境
- 服務(wù)器是阿里云的ECS服務(wù)器
- 安裝了ubuntu14.04 linux系統(tǒng)
- 搭建了hadoop2.7.3的集群
- hadoop集群中主機名分別為Master壳坪、Slave1琳水、Slave2
- 配置了/etc/hosts 文件论寨,修改主機名和服務(wù)器ip映射
遇到的問題
在外網(wǎng)是可以訪問http://Master:50070妄帘,
無法訪問http://Master:8088/clusterjava eclipse 遠(yuǎn)程訪問hadoop搏予,失敗岂贩,通過百度妈踊,谷歌驗證配置什么的都正確娱局,錯誤內(nèi)容如下
Error:Call From DESKTOP-XXPC/192.168.0.103 to Master:9000 failed on connection exception:java.net.ConnectException:Connection refused:no further information;
- telnet Master:9000不通
總而言之彰亥,hadoop集群中我可以訪問部分端口。
解決方案
一開始以為是linux防火墻的問題(不過關(guān)閉防火墻也是個解決方案衰齐,大家也可以嘗試下)任斋,但是我關(guān)閉了還是無法解決上面的問題。
其實問題出在了hosts文件關(guān)于主機名和ip映射配置的上面耻涛。
阿里云ECS主機提供了2個ip废酷,一個是外網(wǎng)的ip,一個是內(nèi)網(wǎng)的ip
我一開始的hosts文件用的是內(nèi)網(wǎng)的ip地址抹缕,ip映射如下:
10.171.xxx.xxx Master
10.163.xxx.xxx Salve1
10.165.xxx.xxx Salve2
然后修改成外網(wǎng)ip以后上面的問題就解決了澈蟆,ip映射如下:
112.126.xxx.xxx Master
125.112.xxx.xxx Slave1
124.112.xxx.xxx Slave2
小結(jié):我們hosts映射的ip是阿里云內(nèi)網(wǎng)ip,我們在hadoop的配置文件中寫的是主機名卓研,比如yarn-site.xml 中<name>yarn.resourcemanager.webapp.address</name>的value為<value>Master:8088</value>趴俘,這里規(guī)定了我們訪問hadoop8088端口時走的是Master對應(yīng)的內(nèi)網(wǎng)ip,但是實際訪問中奏赘,我們是用的Master的公網(wǎng)ip的8088端口寥闪,自然就無法從公網(wǎng)訪問hadoop的8088端口了(在內(nèi)網(wǎng)沒問題),所以我們把主機映射的iP都改成主機的公網(wǎng)IP磨淌,所有的問題就迎刃而解了疲憋。