1、問題描述
1.1 基本信息[Basic Information]
- 集羣規模:37+3臺物理機,每臺128G內存;CPU:2*16C;SATA磁盤,2T*12
- hadoop社區版本:**
- 商業版本:FusionInsight_HD_V100R002C60U10
- MetaStore:高斯數據庫(Postgresql)
1.2 問題描述[Problem Description]
- 10月26號出現大規模任務積壓。跑批任務執行緩慢;
2、問題分析[Problem Analysis]
2.1 問題背景
出現運行慢包含如下兩個問題:
1. 打開Yarn的任務日誌頁面,發現有大量的任務啓動,但無法執行。每個任務使用的container均是1個。
2. 運行中的部分任務,比平時多消耗大約一到兩分鐘。
2.2 日誌分析
問題1:
出現該現象,是因爲AM配置的資源百分比爲0.6,導致每個隊列的百分之六十的資源都消耗在AM啓動上。
關於AM配置資源百分比參數(maximum-am-resource-percent)的說明:
該參數是指,AM可以使用隊列的資源配比。在mapreduce架構中。如果需要啓動一個任務,就需要啓動一個AM(Application Master)負責該任務的管理。 然後AM向ResourceManager申請隊列資源,將任務拆分成多個執行子任務map和reduce。AM並不負責任務的計算,只負責子任務的分配、監控,調度。
從問題的情況來看,由於該參數配置值爲0.6。在大規模任務執行時,將出現多個任務均處於AM啓動狀態(百分之60資源),但是由於剩餘執行子任務計算的資源只剩餘40%。整體任務計算緩慢。
該參數在出廠設置值是0.1,修改成出廠默認值之後,大規模任務下整體時間有顯著減少。
問題二:從日誌分析,發現部分map、reduce任務啓動時間較長。但執行時間短。通過jstack線程棧分析,發現執行操作系統命令執行緩慢。通過檢查發現,在redhat6.5下觸發了操作系統的bug。
詳情請參看<XXXX>
3、根本原因[Root Cause]
本問題主要包括兩個方面:
- AM可以使用隊列的資源配比參數配置不合理;
- 操作系統問題導致性能下降。
4、解決措施[Corrective Action]
4.1 最終解決措施[Solution]
- 修改參數maximum-am-resource-percent 爲0.1。
- 修改操作系統參數
- 步驟1. echo "vm.zone_reclaim_mode = 0" >> /etc/sysctl.conf
- 步驟2. sysctl -p