Amazon Managed Service for Apache Flink 之前稱為 Amazon Kinesis Data Analytics 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
的限制等於 KPU 的限制 ParallelismPerKPU
乘以 (預設值為 64)。KPU 限制可透過請求提高限制來增加。如需如何請求提高限制的指示,請參閱 Service Quotas 中的「請求提高限制」。
如需為特定運算子設定任務平行處理的資訊,請參閱 Apache Flink 文件中的設定平行處理:運算
配置 Kinesis 處理單元
Managed Service for Apache Flink 以 KPU 的形式佈建容量。單一 KPU 可為您提供 1 個 vCPU 和 4 GB 的記憶體。針對每個配置的 KPU,還會提供 50 GB 的執行中應用程式儲存體。
Managed Service for Apache Flink 會使用 Parallelism
和 ParallelismPerKPU
屬性計算執行應用程式所需的 KPU,如下所示:
Allocated KPUs for the application = Parallelism/ParallelismPerKPU
Managed Service for Apache Flink 可快速提供應用程式資源,以因應輸送量或處理活動尖峰。它會在活動尖峰過去後逐漸從應用程式中移除資源。若要停用資源的自動配置,請將 AutoScalingEnabled
值設定為 false
,如稍後 更新應用程式的平行處理 中所述。
應用程式的 KPU 預設限制為 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 的平行處理啟動應用程式,則所有運算子maxParallelism
的 都將是 128。
注意
任務的最大平行處理是擴展應用程式保留狀態的平行處理上限。
如果您修改maxParallelism
現有應用程式,應用程式將無法從先前使用舊 拍攝的快照重新啟動maxParallelism
。您只能在沒有快照的情況下重新啟動應用程式。
如果您計劃將應用程式擴展到大於 128 的平行處理,則必須maxParallelism
在應用程式中明確設定 。
Autoscaling 邏輯可防止將 Flink 任務擴展到超過任務最大平行處理的平行處理。
如果您使用自訂自動擴展或排程擴展,請加以設定,以免超過任務的最大平行處理。
如果您手動將應用程式擴展到超過最大平行處理,則應用程式無法啟動。