在AWS EMR使用多個Master高可用部署場景下,需要創建3台Master節點上。登錄到其中一台節點,運行如下命令:
yarn application -list
在某些場景下會遇到如下報錯。報錯信息:
WARN ipc.Client: Failed to connect to server: ip-172-31-22-134.cn-northwest-1.compute.internal/172.31.22.134:8032: retries get failed due to exceeded maximum allowed retries number: 0 java.net.ConnectException: Connection refused
錯誤場景如下截圖。
不過在等待一段時間后,也可以看到yarn返回了最終的輸出。如下截圖。
造成這個問題是因為EMR開啟了多Master部署,有三台Master節點,分別叫做rm1、rm2、rm3。當前登錄的節點可能是rm1,運行yarn查詢的時候默認先查詢rm1。但是,整個集群的master已經切換走了,rm1並不是master角色,所以yarn會反復查詢失敗,然后去輪詢到下一個節點rm2,繼續失敗,最后在rm3節點查詢完成。
接下來驗證下,當前的集群中誰是master節點。執行如下命令:
yarn rmadmin -getAllServiceState
執行效果如下截圖。
可以從如上命令看出,IP結尾是239的才是master節點。那么這個239節點是否在yarn查詢列表的第一位呢?還是排在最后一位?
編輯如下配置文件:
sudo vim /etc/hadoop/conf.empty/yarn-site.xml
查看里邊的resource manager的順序如下:
如上截圖可以看到,順序是rm1、rm2、rm3,而rm1對應的IP並不是當前的master節點。所以才有了這個查詢失敗。
解決辦法:把順序改成rm3、rm2、rm1。改完后,再運行yarn,就沒有報錯了。如下截圖。
至此問題解決。
