Amazon Managed Service for Apache Flink 之前稱為 Amazon Kinesis Data Analytics for Apache Flink。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Managed Service for Apache Flink 中實作應用程式擴展
您可以為 Amazon Managed Service for Apache Flink 設定任務的平行執行和資源配置,以實作擴展。如需有關 Apache Flink 如何排程任務平行執行個體的資訊,請參閱 Apache Flink 文件中的平行執行
主題
設定應用程式平行處理和 ParallelismPerKPU
您可以使用下列 ParallelismConfiguration
屬性,為 Managed Service for Apache Flink 應用程式任務 (例如從來源讀取或執行運算子) 設定平行執行:
-
Parallelism
:使用此屬性可設定預設的 Apache Flink 應用程式平行處理層級。除非在應用程式的程式碼中覆寫,否則所有運算子、來源和接收器都按此平行處理層級執行。預設值為1
,最大值為256
。 -
ParallelismPerKPU
— 使用此屬性可設定應用程式的每個 Kinesis 處理單元 (KPU) 可排程的平行任務數目。預設值為1
,最大值為8
。對於具有封鎖操作 (例如 I/O) 的應用程式,較高的 值ParallelismPerKPU
會導致KPU資源的完全利用。
注意
的限制Parallelism
等於 的限制的 ParallelismPerKPU
倍 KPUs(預設為 64)。請求提高KPUs限制可以提高限制。如需如何請求提高限制的指示,請參閱 Service Quotas 中的「請求提高限制」。
如需為特定運算子設定任務平行處理的相關資訊,請參閱 Apache Flink 文件中的設定平行處理:運算子
配置 Kinesis 處理單位
Managed Service for Apache Flink 將容量佈建為 KPUs。單一 KPU可為您提供 1 vCPU 和 4 GB 的記憶體。針對每個KPU配置,也會提供 50 GB 執行中的應用程式儲存。
Managed Service for Apache Flink 會計算使用 Parallelism
和 ParallelismPerKPU
屬性執行應用程式所需的 KPUs ,如下所示:
Allocated KPUs for the application = Parallelism/ParallelismPerKPU
Managed Service for Apache Flink 可快速提供應用程式資源,以因應輸送量或處理活動尖峰。它會在活動尖峰過去後逐漸從應用程式中移除資源。若要停用資源的自動配置,請將 AutoScalingEnabled
值設定為 false
,如稍後 更新應用程式的平行處理 中所述。
應用程式的預設限制KPUs為 64。如需如何請求提高此限制的指示,請參閱 Service Quotas 中的「請求提高限制」。
注意
為協調目的而收取額外的KPU費用。如需詳細資訊,請參閱 Managed Service for Apache Flink 定價
更新應用程式的平行處理
本節包含設定應用程式平行處理之API動作的範例請求。如需如何搭配 API 動作使用請求區塊的更多範例和指示,請參閱 Managed Service for Apache Flink API範例程式碼。
CreateApplication
動作的下列請求範例會在您建立應用程式時設定平行處理:
{ "ApplicationName": "string", "RuntimeEnvironment":"FLINK-1_18", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "CodeContentType":"ZIPFILE" }, "FlinkApplicationConfiguration": { "ParallelismConfiguration": { "AutoScalingEnabled": "true", "ConfigurationType": "CUSTOM", "Parallelism": 4, "ParallelismPerKPU": 4 } } } }
UpdateApplication
動作的下列請求範例會為現有的應用程式時設定平行處理:
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "true", "ConfigurationTypeUpdate": "CUSTOM", "ParallelismPerKPUUpdate": 4, "ParallelismUpdate": 4 } } } }
UpdateApplication
動作的下列請求範例會為現有的應用程式時停用平行處理:
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "false" } } } }
maxParallelism 考量事項
Flink 任務可以擴展的最大平行處理,受限於任務maxParallelism
所有運算子的最小值。例如,如果您只有來源和接收器的簡易任務,且來源的 為 maxParallelism
16,而接收器的 為 8,則應用程式無法擴展到 8 的平行處理範圍之外。
若要了解如何計算運算子maxParallelism
的預設值,以及如何覆寫預設值,請參閱在 Apache Flink 維度中設定平行處理上限
作為基本規則,請注意,如果您未maxParallelism
為任何運算子定義 ,且您以小於或等於 128 的平行處理啟動應用程式,則所有運算子都會有 128 maxParallelism
的 。
注意
任務的最大平行處理是擴展應用程式保留狀態的平行處理上限。
如果您修改maxParallelism
現有應用程式,應用程式將無法從先前使用舊 拍攝的快照重新啟動maxParallelism
。您只能在沒有快照的情況下重新啟動應用程式。
如果您計劃將應用程式擴展到大於 128 的平行處理,則必須maxParallelism
在應用程式中明確設定 。
自動擴展邏輯可防止將 Flink 任務擴展到會超過任務最大平行處理的平行處理。
如果您使用自訂自動擴展或排程擴展,請加以設定,以免超過任務的最大平行處理。
如果您手動將應用程式擴展到超過最大平行處理,則應用程式無法啟動。