記一Hive執行Job掛起(Accepted狀態)的異常處理
阿新 • • 發佈:2019-12-31
問題
- 出現Hive執行
select count(*) from ……
語句時,任務長時間不執行 - 在Yarn介面觀察任務狀態一直是Accepted狀態
- Hive使用tez引擎啟動時掛起,使用beeline連線後執行count報錯
- 此時叢集還有很多記憶體和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 狀態,但叢集還有可用資源
週末愉快~ 複製程式碼