Amazon Managed Service für Apache Flink war zuvor als Amazon Kinesis Data Analytics für Apache Flink bekannt.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Anwendungsskalierung in Managed Service für Apache Flink
Sie können die parallele Ausführung von Aufgaben und die Zuweisung von Ressourcen für Amazon Managed Service für Apache Flink konfigurieren, um die Skalierung zu implementieren. Informationen darüber, wie Apache Flink parallel Instanzen von Aufgaben plant, finden Sie unter Parallele Ausführung
Themen
Konfiguration von Anwendungsparallelität und KPU ParallelismPer
Sie konfigurieren die parallele Ausführung der Aufgaben Ihrer mit Managed Service für Apache Flink erstellten Anwendung (wie das Lesen aus einer Quelle oder das Ausführen eines Operators) mithilfe der folgenden ParallelismConfiguration
-Eigenschaften:
-
Parallelism
– Verwenden Sie diese Eigenschaft, um die Standardparallelität der Apache-Flink-Anwendung festzulegen. Alle Operatoren, Quellen und Senken werden mit dieser Parallelität ausgeführt, sofern sie nicht im Anwendungscode überschrieben werden. Der Standardwert beträgt1
; der voreingestellte Maximalwert beträgt256
. -
ParallelismPerKPU
– Verwenden Sie diese Eigenschaft, um die Anzahl der parallelen Aufgaben festzulegen, die pro Kinesis Processing Unit (KPU) Ihrer Anwendung geplant werden können. Der Standardwert ist1
und der Maximalwert ist8
. Bei Anwendungen mit blockierenden Vorgängen (z. B. E/A) führt ein höhererParallelismPerKPU
-Wert zu einer Vollauslastung der KPU-Ressourcen.
Anmerkung
Der Grenzwert für Parallelism
entspricht dem Wert von ParallelismPerKPU
multipliziert mit dem Grenzwert für KPUs (der standardmäßig 64 ist). Der KPU-Grenzwert kann erhöht werden, indem eine Erhöhung des Grenzwerts angefordert wird. Anweisungen zum Anfordern einer Erhöhung dieses Grenzwerts finden Sie unter „So fordern Sie eine Erhöhung des Grenzwerts an“ unter Service Quotas.
Informationen zum Einstellen der Aufgabenparallelität für einen bestimmten Operator finden Sie unter Setting the Parallelism: Operator in der Apache Flink-Dokumentation
Zuweisen von Kinesis Processing Units
Managed Service für Apache Flink stellt Kapazität als KPUs bereit. Eine einzelne KPU bietet Ihnen 1 vCPU und 4 GB Arbeitsspeicher. Für jede zugewiesene KPU werden außerdem 50 GB Speicher für laufende Anwendungen bereitgestellt.
Managed Service für Apache Flink berechnet die KPUs, die zum Ausführen Ihrer Anwendung benötigt werden, mithilfe der Eigenschaften von Parallelism
und ParallelismPerKPU
wie folgt:
Allocated KPUs for the application = Parallelism/ParallelismPerKPU
Managed Service für Apache Flink stellt Ihren Anwendungen schnell Ressourcen zur Verfügung, um auf Spitzen im Durchsatz oder bei der Verarbeitungsaktivität zu reagieren. Es entfernt Ressourcen schrittweise aus Ihrer Anwendung, nachdem die Aktivitätsspitze vorüber ist. Um die automatische Zuweisung von Ressourcen zu deaktivieren, setzen Sie den Wert von AutoScalingEnabled
auf false
, wie weiter unten unter Aktualisierung der Parallelität Ihrer Anwendung beschrieben.
Der Standardgrenzwert für KPUs für Ihre Anwendung ist 64. Anweisungen zum Anfordern einer Erhöhung dieses Grenzwerts finden Sie unter „So fordern Sie eine Erhöhung des Grenzwerts an“ unter Service Quotas.
Anmerkung
Für Orchestrierungszwecke wird eine zusätzliche KPU berechnet. Weitere Informationen finden Sie unter Managed Service für Apache Flink – Preise
Aktualisierung der Parallelität Ihrer Anwendung
Dieser Abschnitt enthält Beispielanfragen für API-Aktionen, die die Parallelität einer Anwendung festlegen. Weitere Beispiele und Anweisungen zur Verwendung von Anforderungsblöcken mit API-Aktionen finden Sie unter Beispielcode für Managed Service für Apache Flink API.
Die folgende Beispielanforderung für die CreateApplication
-Aktion legt die Parallelität fest, wenn Sie eine Anwendung erstellen:
{ "ApplicationName": "string", "RuntimeEnvironment":"FLINK-1_18", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::mybucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "CodeContentType":"ZIPFILE" }, "FlinkApplicationConfiguration": { "ParallelismConfiguration": { "AutoScalingEnabled": "true", "ConfigurationType": "CUSTOM", "Parallelism": 4, "ParallelismPerKPU": 4 } } } }
Die folgende Beispielanforderung für die UpdateApplication
-Aktion legt die Parallelität für eine bestehende Anwendung fest:
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "true", "ConfigurationTypeUpdate": "CUSTOM", "ParallelismPerKPUUpdate": 4, "ParallelismUpdate": 4 } } } }
Die folgende Beispielanforderung für die UpdateApplication
-Aktion deaktiviert die Parallelität für eine bestehende Anwendung:
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "false" } } } }
Auto Scaling
Managed Service für Apache Flink skaliert die Parallelität Ihrer Anwendung elastisch, um dem Datendurchsatz Ihrer Quelle und der Komplexität Ihres Operators in den meisten Szenarien Rechnung zu tragen. Managed Service für Apache Flink überwacht die Ressourcenauslastung (CPU-Auslastung) Ihrer Anwendung und skaliert die Parallelität Ihrer Anwendung entsprechend elastisch nach oben oder unten:
Ihre Anwendung wird skaliert (erhöht die Parallelität), wenn das CloudWatch metrische Maximum für
containerCPUUtilization
15 Minuten über 75 Prozent oder mehr liegt. Das bedeutet, dass dieScaleUp
-Aktion ausgelöst wird, wenn es 15 aufeinanderfolgende Datenpunkte mit einem Zeitraum von 1 Minute gibt, der 75 Prozent oder mehr entspricht.Ihre Anwendung wird herunterskaliert (Parallelität wird verringert), wenn die CPU-Auslastung sechs Stunden lang unter 10 Prozent bleibt. Das bedeutet, dass die
ScaleDown
-Aktion ausgelöst wird, wenn es 360 aufeinanderfolgende Datenpunkte mit einem Zeitraum von 1 Minute gibt, der weniger als 10 Prozent beträgt.
Anmerkung
Es kann ein Maximum von containerCPUUtilization
über 1 Minute referenziert werden, um die Korrelation mit einem Datenpunkt zu ermitteln, der für die Skalierungsaktion verwendet wird. Es ist jedoch nicht erforderlich, den genauen Zeitpunkt wiederzugeben, zu dem die Aktion ausgelöst wird.
Managed Service für Apache Flink reduziert den CurrentParallelism
-Wert Ihrer Anwendung nicht auf weniger als die Parallelism
-Einstellung Ihrer Anwendung.
Wenn der Service von Managed Service für Apache Flink Ihre Anwendung skaliert, befindet er sich im Status AUTOSCALING
. Sie können den aktuellen Status Ihrer Bewerbung mithilfe der Aktionen DescribeApplicationoder ListApplicationsüberprüfen. Während der Service Ihre Anwendung skaliert, können Sie die einzige gültige API-Aktion verwenden, wenn der Force
Parameter auf gesetzt ist StopApplicationtrue
.
Sie können die Eigenschaft AutoScalingEnabled
(Teil von FlinkApplicationConfiguration
) verwenden, um das Auto-Scaling-Verhalten zu aktivieren oder zu deaktivieren. Ihr AWS Konto wird für die von Managed Service for Apache Flink bereitgestellten KPUs belastet. Dies hängt von Ihren Anwendungen parallelism
und parallelismPerKPU
Einstellungen ab. Eine Aktivitätsspitze erhöht Ihre Kosten für Managed Service für Apache Flink.
Weitere Informationen finden Sie unter Amazon Managed Service für Apache Flink – Preise
Beachten Sie Folgendes im Zusammenhang mit der Anwendungsskalierung:
Die automatische Skalierung ist standardmäßig aktiviert.
Skalierung gilt nicht für Studio-Notebooks. Wenn Sie ein Studio-Notebook jedoch als Anwendung mit dauerhaftem Zustand bereitstellen, gilt die Skalierung für die bereitgestellte Anwendung.
Ihre Anwendung hat einen Standardgrenzwert von 64 KPUs. Weitere Informationen finden Sie unter Kontingent.
Wenn Auto Scaling die Anwendungsparallelität aktualisiert, kommt es bei der Anwendung zu Ausfallzeiten. Gehen Sie wie folgt vor, um diese Ausfallzeit zu vermeiden:
Deaktivieren der automatischen Skalierung
Konfigurieren Sie das
parallelism
undparallelismPerKPU
mit der Aktion Ihrer Anwendung. UpdateApplication Weitere Informationen über die Einstellung der Parallelitätseinstellungen Ihrer Anwendung finden Sie nachfolgend unter Aktualisierung der Parallelität Ihrer Anwendung.Überwachen Sie regelmäßig den Ressourcenverbrauch Ihrer Anwendung, um sicherzustellen, dass Ihre Anwendung über die richtigen Parallelitätseinstellungen für ihren Workload verfügt. Weitere Informationen über die Überwachung des Ressourcenverbrauchs finden Sie unter Metriken und Dimensionen in Managed Service für Apache Flink anzeigen.
Überlegungen zu maxParallelism
Durch die Auto-Scaling-Logik wird verhindert, dass ein Flink-Auftrag zur Parallelität skaliert wird, was zu Interferenzen mit dem Auftrag und dem Operator
maxParallelism
führen würde. Wenn es sich beispielsweise um einen einfachen Auftrag mit nur einer Quelle und einer Senke handelt, bei der die QuellemaxParallelism
16 hat und diesink
8 hat, werden wir den Auftrag nicht automatisch auf über 8 skalieren.Wenn für einen Job nicht
maxParallelism
eingestellt ist, wird Flink standardmäßig 128 verwenden. Wenn Sie also der Meinung sind, dass ein Auftrag mit einer höheren Parallelität als 128 ausgeführt werden muss, müssen Sie diese Zahl für Ihre Anwendung festlegen.Wenn Sie erwarten, dass Ihr Auftrag automatisch skaliert wird, dies aber nicht der Fall ist, stellen Sie sicher, dass Ihre
maxParallelism
-Werte dies zulassen.
Weitere Informationen finden Sie unter Erweiterte Überwachung und automatische Skalierung für Apache Flink
Ein Beispiel finden Sie unter kda-flink-app-autoscaling