Anwendungsskalierung in Managed Service für Apache Flink - Managed Service für Apache Flink

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 in der Apache Flink-Dokumentation.

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ägt 1; der voreingestellte Maximalwert beträgt 256.

  • 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 ist 1 und der Maximalwert ist 8. Bei Anwendungen mit blockierenden Vorgängen (z. B. E/A) führt ein höherer ParallelismPerKPU-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 die ScaleUp-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:

Ü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 Quelle maxParallelism 16 hat und die sink 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.