1. 程式人生 > 程式設計 >記一Hive執行Job掛起(Accepted狀態)的異常處理

記一Hive執行Job掛起(Accepted狀態)的異常處理

問題

  1. 出現Hive執行select count(*) from ……語句時,任務長時間不執行
  2. 在Yarn介面觀察任務狀態一直是Accepted狀態
  3. Hive使用tez引擎啟動時掛起,使用beeline連線後執行count報錯
  4. 此時叢集還有很多記憶體和CPU資源空閒!

定位

檢視Yarn UI介面的日誌,有如下提示:

Diagnostics:Application is added to the scheduler and is not yet activated. 
Queue's AM resource limit exceeded. Details : AM Partition = <DEFAULT_PARTITION>; 
AM Resource Request = <memory:9216MB(9G),vCores:1>; 
Queue Resource Limit for AM = <memory:454656MB(444G),vCores:1>; 
User AM Resource Limit of the queue = <memory:229376MB(224G),vCores:1>; 
Queue AM Resource Usage = <memory:221184MB(216G),vCores:24>;
複製程式碼

說明任務被提交到排程器,但ApplicationMaster申請的資源超過了上限,剩餘可用資源不足以啟動AM,因此程式處於掛起狀態,不能執行。

  • 觸發資源上限的可能是記憶體,或虛擬核數(vCores)以及二者均有,分析時可注意甄別。

解決方案

調大AM資源百分比

maximum-am-resource-percent:叢集中用於執行應用程式ApplicationMaster的資源比例上限,該引數通常用於限制處於活動狀態的應用程式數目。該引數型別為浮點型,我這預設是20%。所有佇列的ApplicationMaster資源比例上限可通過引數yarn.scheduler.capacity. maximum-am-resource-percent設定,而單個佇列可通過引數yarn.scheduler.capacity.. maximum-am-resource-percent設定適合自己的值。一般不要超過50%。

如果是HDP使用者

使用Ambari修改 Maximum AM Resource

結語

這個問題不常遇到,一般只有在Yarn正在執行很多工時出現,記錄在此。但導致Yarn任務掛起,一直Accepted狀態的原因不一定是這個。

為使本問題容更容易被搜尋到,以上內容涉及:

  • Application Master申請不到資源

  • 提交了Yarn任務之後沒有分配資源

  • Queue AM Resource Usage,Queue's AM resource limit exceeded.

  • 修改叢集用於執行應用程式ApplicationMaster的資源比例上限

  • yarn.scheduler.capacity.maximum-am-resource-percent調整

  • 任務處於 Accepted 狀態,但叢集還有可用資源

    週末愉快~
    複製程式碼