Scalabilità delle applicazioni in Managed Service per Apache Flink - Servizio gestito per Apache Flink

Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis per Apache Flink.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Scalabilità delle applicazioni in Managed Service per Apache Flink

È possibile configurare l'esecuzione parallela delle attività e l'allocazione delle risorse per il servizio gestito da Amazon per Apache Flink, al fine di implementare il dimensionamento. Per informazioni su come Apache Flink pianifica le istanze parallele di attività, consulta Parallel Execution nella documentazione di Apache Flink.

Configurazione del parallelismo delle applicazioni e della KPU ParallelismPer

È possibile configurare l'esecuzione parallela per le attività dell'applicazione servizio gestito per Apache Flink (leggere da un’origine o eseguire un operatore, per esempio) utilizzando le proprietà ParallelismConfiguration:

  • Parallelism: utilizza questa proprietà per impostare il parallelismo predefinito dell'applicazione di Apache Flink. Tutti gli operatori, le origini e i sink vengono eseguiti con questo parallelismo, a meno che non siano sovrascritti nel codice dell'applicazione. Il valore predefinito è 1, il valore massimo predefinito è 256.

  • ParallelismPerKPU: utilizza questa proprietà per impostare il numero di task paralleli che è possibile pianificare per ogni unità di elaborazione Kinesis (KPU, Kinesis Processing Unit) dell'applicazione. Il valore predefinito è 1, il valore massimo predefinito è 8. Per le applicazioni che prevedono operazioni di blocco (ad esempio I/O), un valore più elevato di ParallelismPerKPU implica di utilizzare le risorse KPU nella loro totalità.

Nota

Il limite di Parallelism è pari a ParallelismPerKPU volte il limite per le KPU (il cui valore predefinito è 64). Il limite delle KPU può essere aumentato richiedendo un aumento del limite. Per istruzioni su come richiedere un aumento del limite, consultare "Richiedere un aumento del limite" in Service Quotas.

Per informazioni sull'impostazione del parallelismo delle attività per un operatore specifico, consulta Impostazione del parallelismo: operatore nella documentazione di Apache Flink.

Allocazione delle unità di elaborazione Kinesis

Il servizio gestito per Apache Flink fornisce la capacità sotto forma di KPU. Una singola KPU offre 1 vCPU e 4 GB di memoria. Per ogni KPU allocata, vengono forniti anche 50 GB di spazio di archiviazione delle applicazioni in esecuzione.

Il servizio gestito per Apache Flink calcola le KPU necessarie per eseguire l'applicazione utilizzando le proprietà Parallelism e ParallelismPerKPU, nel modo seguente:

Allocated KPUs for the application = Parallelism/ParallelismPerKPU

Il servizio gestito per Apache Flink fornisce rapidamente risorse alle applicazioni in risposta ai picchi della velocità di trasmissione effettiva o di attività di elaborazione. Rimuove gradualmente le risorse dall'applicazione dopo il superamento del picco di attività. Per disabilitare l'allocazione automatica delle risorse, è sufficiente impostare il valore AutoScalingEnabled su false, come descritto in seguito in Aggiornamento del parallelismo dell'applicazione.

Il limite predefinito per le KPU per l'applicazione è 64. Per istruzioni su come richiedere un aumento di tale limite, consulta "Richiedere un aumento del limite" in Service Quotas.

Nota

A scopo di orchestrazione viene addebitata una KPU aggiuntiva. Per ulteriori informazioni, consulta il Piano tariffario del servizio gestito da Amazon per Apache Flink.

Aggiornamento del parallelismo dell'applicazione

Questa sezione contiene esempi di richieste di azioni API che impostano il parallelismo di un'applicazione. Per ulteriori esempi e istruzioni sull’utilizzo dei blocchi di richiesta con le azioni API, consulta Codice di esempio dell'API Managed Service per Apache Flink.

Il seguente esempio di richiesta per l'azione CreateApplication imposta il parallelismo durante la creazione di un'applicazione:

{ "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 } } } }

Il seguente esempio di richiesta per l'azione UpdateApplication imposta il parallelismo per un'applicazione pre-esistente:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "true", "ConfigurationTypeUpdate": "CUSTOM", "ParallelismPerKPUUpdate": 4, "ParallelismUpdate": 4 } } } }

Il seguente esempio di richiesta per l'azione UpdateApplication disabilita il parallelismo per un'applicazione pre-esistente:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "false" } } } }

Scalabilità automatica

Il servizio gestito per Apache Flink ridimensiona in modo elastico il parallelismo dell'applicazione, per adattarsi alla velocità di trasmissione effettiva dei dati della fonte e alla complessità dell'operatore nella maggior parte delle situazioni. Il servizio gestito per Apache Flink monitora l'utilizzo delle risorse (CPU) da parte dell'applicazione e aumenta o diminuisce elasticamente il parallelismo dell'applicazione in base alle esigenze:

  • L'applicazione si ridimensiona verso l'alto (aumenta il parallelismo) se il valore massimo della CloudWatch metrica containerCPUUtilization è superiore o superiore al 75% per 15 minuti. Ciò significa che l'azione ScaleUp viene eseguita quando ci sono 15 punti dati consecutivi con un periodo di un minuto pari o superiore al 75%.

  • L'applicazione si riduce (diminuisce il parallelismo) quando l'utilizzo della CPU rimane inferiore al 10% per sei ore. Ciò significa che l'azione ScaleDown viene eseguita quando ci sono 360 punti dati consecutivi con un periodo di un minuto pari o superiore al 10%.

Nota

È possibile fare riferimento a un massimo di containerCPUUtilization periodi di oltre un minuto per individuare la correlazione con un punto dati utilizzato per il dimensionamento, ma non è necessario indicare il momento esatto in cui l'azione viene azionata.

Il servizio gestito per Apache Flink non ridurrà il valore di CurrentParallelism dell'applicazione a un valore inferiore rispetto all’impostazione Parallelism.

Quando il servizio gestito per Apache Flink dimensiona l'applicazione, questa comparirà nello status AUTOSCALING. Puoi controllare lo stato attuale della tua candidatura utilizzando le azioni o. DescribeApplication ListApplications Mentre il servizio sta scalando l'applicazione, l'unica azione API valida che puoi utilizzare è StopApplicationcon il Force parametro impostato true su.

È possibile utilizzare la proprietà AutoScalingEnabled (parte di FlinkApplicationConfiguration) per abilitare o disabilitare il dimensionamento automatico. All' AWS account vengono addebitati i KPU forniti da Managed Service for Apache Flink, in base alle impostazioni e all'applicazione. parallelism parallelismPerKPU Un picco di attività aumenta i costi del servizio gestito per Apache Flink.

Per ulteriori informazioni sulle tariffe, consulta il Piano tariffario del servizio gestito da Amazon per Apache Flink.

È fondamentale tenere presente quanto segue in merito al dimensionamento dell'applicazione:

  • Il dimensionamento automatico è abilitato per impostazione predefinita.

  • Il dimensionamento non si applica ai notebook Studio. Tuttavia, nel caso in cui si implementi un notebook Studio come applicazione con stato permanente, il dimensionamento verrà eseguito sull'applicazione implementata.

  • L'applicazione ha un limite predefinito di 64 KPU. Per ulteriori informazioni, consulta Quota.

  • Quando il dimensionamento automatico aggiorna il parallelismo dell'applicazione, l'applicazione subisce un’interruzione. Segui i seguenti passaggi per evitare che l’applicazione si interrompa:

Considerazioni su maxParallelism

  • La logica di dimensionamento automatico impedirà il dimensionamento di un processo Flink in un parallelismo che causerà interferenze con il lprocesso e l'operatore maxParallelism. Ad esempio, se si tratta di un processo semplice con solo una sorgente e un sink in cui la sorgente ha 16 maxParallelism e sink ha 8, il processo non dimensionerà automaticamente oltre l’8.

  • Se non maxParallelism è impostato per un processo, il valore predefinito di Flink è 128. Pertanto, nel caso in cui si ritenga che un processo debba essere eseguito con un parallelismo superiore a 128, sarà necessario impostare tale numero per l’applicazione.

  • Se il processo dovrebbe dimensionarsi in maniera automatica ma ciò non avviene, assicurarsi di verificare che i valori maxParallelism lo consentano.

Per ulteriori informazioni, consulta Monitoraggio avanzato e dimensionamento automatico per Apache Flink.

Per un esempio, vedi kda-flink-app-autoscaling.