在安裝好hadoop2.2.0集羣后,依次執行start-dfs.sh和start-yarn.sh腳本啓動hadoop相關的服務。各個服務均能正常啓動。可是過了一段時間後會發現nodemanager會自動失敗退出。
java
檢查日誌信息發現一直報本機與一個0.0.0.0的鏈接失敗,而後繼續與進行通訊嘗試一段時間後nodemanager失敗。具體信息以下: node
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.ConnectException: Call From node2/222.18.159.123 to 0.0.0.0:8031 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused apache
Caused by: java.net.ConnectException: Call From node2/222.18.159.123 to 0.0.0.0:8031 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused oop
經過檢查配置文件知道8031端口出如今yarn-site.xml配置文件的yarn.resourcemanager.scheduler.address配置項中。yarn.resourcemanager.scheduler.address 是resourcemanager暴漏給nodemanager的地址和端口。nodermanager利用這個地址經過心跳機制與RM通訊。
正常狀況下個人NM應該與RM通訊,可是NM卻一直與0.0.0.0通訊.所以查閱官方默認的yarn-site.xml配置文件,發現其中yarn.resourcemanager.hostname的默認值被設置成:0.0.0.0了(怪不得一直與0.0.0.0通訊)。發現原來是我設置的主機ip在這裏沒有生效。
在yarn-site.xml中添加一項新的項,將yarn.resourcemanager.hostname的值修改成master機器的ip地址。
重啓hadoop服務,一切正常!!!
注:nodemanager啓動後要經過心跳機制按期與RM通訊,不然RM會認爲NM死掉,會中止NM的服務。
同時經過此次失敗提醒出現問題要多去嘗試(我幾乎把網上的方法試了個遍。。。。。。)多參考官方文檔。 spa