本文為您介紹YARN-4946引入缺陷的影響范圍以及相應的修復方案。
背景信息
YARN-4946引入缺陷,YARN ResourceManager刪除歷史應用作業(yè)時增加了日志收集已完成的必要條件,但日志收集的狀態(tài)沒有保留到ResourceManager State Store中,所以重啟后ResourceManager加載的歷史應用都是未完成狀態(tài),無法被ResourceManager自動刪除掉,造成application在ResourceManager中堆積。這部分應用達到上限(相關(guān)配置為${yarn.resourcemanager.state-store.max-completed-applications} 或${yarn.resourcemanager.max-completed-applications},默認值為10000)之后,會影響ResourceManager的調(diào)度。
具體缺陷引入的Issue為YARN-4946,詳情請參見YARN-4946。
通過revert方式修復該缺陷的Issue為YARN-9571,詳情請參見YARN-9571。
缺陷影響
- 缺陷影響的組件:Hadoop YARN(開啟了服務高可用,并且添加了Zookeeper服務)。
- 缺陷級別:嚴重,建議修復,集群長時間運行重啟后會導致集群不可用。
- 缺陷發(fā)生現(xiàn)象:ResourceManager日志一直打印“Application should be expired, max number of completed apps kept in memory met: maxCompletedAppsInMemory = 10000, but not removing app XXX from memory as log aggregation have not finished yet.”,導致YARN ResourceManager不可用,或者出現(xiàn)ResourceManager重啟之后長時間不可用的情況。
缺陷修復方案
您需要將E-MapReduce集群中包含缺陷的Hadoop YARN ResourceManager的JAR包替換掉,然后重啟ResourceManager服務,重啟服務時先處理Standby ResourceManager,再處理Active ResourceManager。
- 適用于EMR的4.6.0、4.7.0、4.8.0、4.9.0、5.1.0、5.2.0和5.2.1版本。
說明 對應Hadoop的3.2.1版本。
- 執(zhí)行該修復方案后,需要重啟對應的組件。重啟組件可能會導致作業(yè)失敗,所以建議業(yè)務低峰期時執(zhí)行。
修復流程
- 替換過程中,重啟一個ResourceManager待正常運行之后再重啟另外一個ResoureManager。
- 如果集群沒有開啟高可用,則無需執(zhí)行該修復流程。
回滾流程
cp /tmp/hadoop-yarn-server-resourcemanager-3.2.1.jar $HADOOP_HOME/share/hadoop/yarn/