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
Argomenti
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 diParallelismPerKPU
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
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'azioneScaleUp
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:
Disabilita il dimensionamento automatico
Configura
parallelism
eparallelismPerKPU
con l'azione della tua applicazione. UpdateApplication Per ulteriori informazioni sull'impostazione delle impostazioni di parallelismo dell'applicazione, consulta quanto segue Aggiornamento del parallelismo dell'applicazione.È fondamentale monitorare periodicamente l'utilizzo delle risorse dell'applicazione, per verificare che disponga di impostazioni di parallelismo adatte al carico di lavoro. Per informazioni sul monitoraggio dell'utilizzo delle risorse di allocazione, consulta Visualizzazione di metriche e dimensioni in Managed Service for Apache Flink.
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 16maxParallelism
esink
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