預先初始化容量 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

預先初始化容量

EMR Serverless 提供選用功能,可讓驅動程式和工作者在幾秒鐘內預先初始化並準備好回應。這有效地為應用程式建立工作者的暖集區。此功能稱為預先初始化容量 。若要設定此功能,您可以將應用程式的 initialCapacity 參數設定為您要預先初始化的工作者人數。透過預先初始化的工作者容量,任務會立即開始。當您想要實作迭代應用程式和具時效性的任務時,這是理想的選擇。

當您提交任務時,如果來自 的工作者initialCapacity可用,該任務會使用這些資源來開始執行。如果這些工作者已經由其他任務使用,或者如果任務需要的資源比 提供的更多initialCapacity,則應用程式會請求並取得額外的工作者,最高可達應用程式所設定資源的最大限制。當任務完成其執行時,它會釋出所使用的工作者,且應用程式可用的資源數目會傳回 initialCapacity。即使任務完成執行,應用程式仍會維護 資源initialCapacity的 。應用程式會在任務不再需要執行initialCapacity時,釋出多餘的資源。

應用程式啟動時,預先初始化的容量可供使用。應用程式停止時,預先初始化容量會變成非作用中。只有當已建立請求的預先初始化容量並準備好使用時,應用程式才會移至 STARTED 狀態。在應用程式處於 STARTED 狀態的整個期間,EMRServerless 會保留預先初始化的容量,以供工作或互動式工作負載使用。此功能會還原已發行或失敗容器的容量。這可維持 InitialCapacity 參數指定的工作者數量。沒有預先初始化容量的應用程式狀態可以立即從 變更為 CREATED STARTED

您可以設定應用程式在一段時間內未使用,預設為 15 分鐘時,釋出預先初始化的容量。當您提交新工作時,停止的應用程式會自動啟動。您可以在建立應用程式時設定這些自動啟動和停止組態,也可以在應用程式處於 CREATEDSTOPPED 狀態時變更組態。

您可以變更InitialCapacity計數,並為每個工作者指定運算組態,例如 、CPU記憶體和磁碟。由於您無法進行部分修改,因此您應該在變更值時指定所有運算組態。您只能在應用程式處於 CREATEDSTOPPED 狀態時變更組態。

注意

為了最佳化應用程式對資源的使用,我們建議您將容器大小與預先初始化的容量工作者大小保持一致。例如,如果您將 Spark 執行器大小設定為 2CPUs,並將記憶體設定為 8 GB,但您的預先初始化容量工作者大小為 4CPUs,具有 16 GB 記憶體,則 Spark 執行器只會在指派給此任務時使用一半的工作者資源。

自訂 Spark 和 Hive 的預先初始化容量

您可以針對特定大數據架構上執行的工作負載,進一步自訂預先初始化的容量。例如,當工作負載在 Apache Spark 上執行時,您可以指定有多少工作者開始擔任驅動程式,以及有多少工作者開始擔任執行器。同樣地,當您使用 Apache Hive 時,您可以指定有多少工作者開始擔任 Hive 驅動程式,以及應該執行多少 Tez 任務。

設定執行具有預先初始化容量的 Apache Hive 的應用程式

下列API請求會根據 Amazon EMR版本 emr-6.6.0 建立執行 Apache Hive 的應用程式。該應用程式從 5 個預先初始化的 Hive 驅動程式開始,每個驅動程式具有 2 vCPU 和 4 GB 的記憶體,以及 50 個預先初始化的 Tez 任務工作者,每個驅動程式具有 4 vCPU 和 8 GB 的記憶體。當 Hive 查詢在此應用程式上執行時,它們會先使用已初始化的工作者,並立即開始執行。如果所有初始化前工作者都忙碌,並提交了更多 Hive 任務,則應用程式可以擴展到總共 400 vCPU 和 1024 GB 的記憶體。您可以選擇性地省略 DRIVERTEZ_TASK工作者的容量。

aws emr-serverless create-application \ --type "HIVE" \ --name my-application-name \ --release-label emr-6.6.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB" } }, "TEZ_TASK": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'

設定執行具有預先初始化容量的 Apache Spark 的應用程式

下列API請求會建立以 Amazon 6.6.0 EMR版為基礎執行 Apache Spark 3.2.0 的應用程式。該應用程式從 5 個預先初始化的 Spark 驅動程式開始,每個驅動程式具有 2 vCPU 和 4 GB 的記憶體,以及 50 個預先初始化的執行器,每個驅動程式具有 4 vCPU 和 8 GB 的記憶體。當 Spark 任務在此應用程式上執行時,它們會先使用預先初始化的工作者,並立即開始執行。如果所有初始化前工作者都忙碌,並提交了更多 Spark 任務,則應用程式可以擴展到總共 400 vCPU 和 1024 GB 的記憶體。您可以選擇性地省略 DRIVER或 的容量EXECUTOR

注意

Spark 會將具有 10% 預設值的可設定記憶體額外負荷新增至驅動程式和執行器所需的記憶體。對於要使用預先初始化工作者的任務,初始容量記憶體組態應大於任務和額外負荷請求的記憶體。

aws emr-serverless create-application \ --type "SPARK" \ --name my-application-name \ --release-label emr-6.6.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB" } }, "EXECUTOR": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'