今日在做節點可靠性測試的時候,錯誤重啟了yarn整個服務,其hdfs等他組件正常,yarn過會自動僵死,導致整個平台資源調度問題,恢復步驟如下:
1.查看日志tail -f yarn-resourcemanger-192.168.1.233.log(不清楚你的日志在哪可以find / -name yarn)
2.登陸裝有yarn的機器,查看rm1,rm2 的狀態。我的rm1,rm2,都是standby,(rm是resourceManger,HA)
$ yarn rmadmin -getServiceState rm1 standby $ yarn rmadmin -getServiceState rm2 standby
(手動的切換准備命令了yarn rmadmin -transitionToStandby rm1)
3.以上兩個命令已經可以發現主rm沒有起來,但重啟后,依然會僵死。清空rm日志,重新啟動rm后,分析日志會發現如下錯誤:
Caused by: org.apache.hadoop.metrics2.MetricsException: Hadoop:service=ResourceManager,name=RMNMInfo already exists!
Caused by: java.lang.IllegalArgumentException: No object name specified
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:949)
... 21 more
Metrics source ClusterMetrics already exists!
4.這時可以考慮是有個application加載不起來。
可以修改yarn-site.xml的yarn.resourcemanager.recovery.enabled = false。
若集群開啟了Recovery功能,則ResourceManager重啟過程中:
- Hive作業正常運行至結束
- YARN UI的作業信息一直保留存在
這里我們要改為false,后重啟yarn。
5.等待yarn空閑時,連接zookeeper(在zk的bin目錄下運行./zkCli.sh -server 127.0.0.1:2181)
登陸后查看該目錄ls /rmstore/ZKRMStateRoot/RMAppRoot,
不為空則使用該命令rmr /rmstore/ZKRMStateRoot/RMAppRoot/* 刪除目錄文件
確定為空時,把yarn-site.xml的yarn.resourcemanager.recovery.enabled改回ture
6.重啟yarn。