為什麼我的 Amazon EMR 中的 Yarn 應用程式仍處於「已接受」狀態?

2 分的閱讀內容
0

我的 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 指標,以查看YARNMemoryAvailablePercentageMemoryAvailableMB

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-mbyarn.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'.

若要解決此問題,請執行下列動作:


AWS 官方
AWS 官方已更新 2 年前