Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
為什麼我的 Amazon EMR 中的 Yarn 應用程式仍處於「已接受」狀態?
我的 Amazon EMR 工作停滯在「已接受」狀態,日誌顯示「警告 Yarn Scheduler: 初始工作尚未接受任何資源;請檢查您的叢集 UI 以確保員工已註冊並擁有足夠資源」。
簡短說明
如果叢集沒有足夠資源來滿足工作請求,EMR 工作就會停滯在已接受狀態。這可能是由於下列原因發生:
- YARNMemoryAvailablePercentage 過低,導致許多容器處於待處理狀態。
- 由於核心節點上的資源不足,應用程式無法啟動主要應用程式。這種情況可能在 Amazon EMR 5.19.0 及更新版本上發生,不包括 Amazon EMR 6.x 系列。
- 核心節點狀況不良。
- 一個 EMR 工作正在消耗所有資源。
解決方法
叢集沒有足夠資源來履行工作請求
1. 連線到資源管理員 UI 或使用下列任何節點的命令來檢查資源:
yarn top 10
2. 檢查使用的資源是否幾乎等同於總資源。您也可以檢查 Amazon CloudWatch 指標,以查看YARNMemoryAvailablePercentage 和 MemoryAvailableMB。
4. 如果需要,將更多容量新增至叢集。您可以使用 EMR 受管擴展功能或自動擴展,根據資源使用率自動新增或縮小容量。
核心節點上的資源不足。
在 EMR 5.19.0 及更新版本上 (不包括 6.0 系列),主要應用程式會根據預設在核心節點上執行。 在 EMR 6.x 系列中,主要應用程式可以在核心和任務節點上執行。
由於提交的工作數量增加,且核心節點較少,核心節點無法配置另一個主要應用程式容器。因此,即使任務節點有足夠的記憶體,工作依然可能會停滯。如果發生這種情況,您可能會在容器日誌中看到下列訊息:
Application is Activated, waiting for resources to be assigned for AM. Last Node which was processed for the application : ip-xxxx:8041 ( Partition : [], Total resource : <memory:516096, vCores:64>, Available resource : <memory:516096,vCores:64> ). Details : AM Partition = CORE ; Partition Resource = <memory:516096, vCores:64> ; Queue's Absolute capacity = 100.0 % ; Queue's Absolute used capacity = 99.53497 % ; Queue's Absolute max capacity =100.0 %
如果發生這種情況,請終止工作以釋放一些資源。或者,將更多核心節點新增至叢集。
此外,您可以在 Amazon EMR 5.x 中關閉 YARN 標籤。
核心節點狀況不良
如果核心節點耗盡磁碟空間,而掛階點的磁碟使用率超過 90%,Amazon EMR 會將節點視為狀況不良。不會在狀況不良的節點上排程新容器。如果發生這種情況,主要執行個體的控制器日誌中會出現以下訊息。記錄位於 /emr/instance-controller/log。
Yarn unhealthy Reason : 1/4 local-dirs usable space is below configured utilization percentage/no more usable space [ /mnt/yarn : used space above threshold of 90.0% ] ; 1/1 log-dirs usable space is below configured utilization percentage/no more usable space [ /var/log/hadoop-yarn/containers : used space above threshold of 90.0% ]
若要修正狀況不良的節點,請移除舊的容器記錄或 spark 事件記錄,來減少磁碟使用量。 您也可以根據磁碟使用率動態擴展儲存體。
單一工作消耗所有資源,或者 Spark 參數設定超出叢集限制
根據預設,Amazon EMR 中會開啟 Spark 動態分配。如果 Spark 工作未正確設定,則該工作可能會消耗所有叢集的資源。例如,如果最大執行程式 (spark.dynamicAllocation.maxExecutors) 限制不夠高,則會出現此錯誤。對於 Spark 工作,請調整記憶體限制,以避免單一工作消耗所有叢集的資源。
如果執行程式記憶體或驅動程式記憶體超過 Yarn 設定參數,則工作接受會失敗。Yarn 配置的參數是 yarn.scheduler.maximum-allocation-mb 和 yarn.nodemanager.resource.memory-mb。如果發生這種情況,您會看到類似下列的錯誤訊息:
22/01/03 20:05:05 INFO Client: Verifying our application has not requested more than the maximum memory capability of the cluster (24576 MB per container) Exception in thread "main" java.lang.IllegalArgumentException: Required executor memory (49152),overhead (6144 MB), and PySpark memory (0 MB) is above the max threshold (24576 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.
若要解決此問題,請執行下列動作:
- 在變更記憶體值之前,請先驗證 yarn 執行個體類型數量。
- 實作 CapacityScheduler 佇列以限制工作使用的工作資源。

相關內容
- 已提問 7 個月前lg...
- 已提問 2 年前lg...