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à.
Implementa la scalabilità delle applicazioni in Managed Service for 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 istanze parallele di attività, vedete Parallel Execution
Argomenti
Configurare il parallelismo delle applicazioni e il 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 con operazioni di blocco (ad esempio I/O), un valore più elevato diParallelismPerKPUcomporta il pieno utilizzo delle risorse KPU.
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, vedete Setting the Parallelism:
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 Aggiorna il 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
Aggiorna il 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:::amzn-s3-demo-bucket", "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" } } } }
Considerazioni su maxParallelism
Il parallelismo massimo che un job Flink può scalare è limitato dal minimo maxParallelism tra tutti gli operatori del job. Ad esempio, se avete un job semplice con solo una sorgente e un sink, e la sorgente ha un valore maxParallelism di 16 e il sink ne ha 8, l'applicazione non può scalare oltre il parallelismo di 8.
Per sapere come viene calcolato il valore predefinito maxParallelism di un operatore e come sovrascriverlo, fate riferimento a Impostazione del parallelismo massimo
Come regola di base, tieni presente che se non definisci alcun operatore e maxParallelism avvii l'applicazione con un parallelismo inferiore o uguale a 128, tutti gli operatori avranno un valore di 128. maxParallelism
Nota
Il parallelismo massimo del processo è il limite massimo di parallelismo per scalare l'applicazione mantenendone lo stato.
Se si modifica maxParallelism un'applicazione esistente, l'applicazione non sarà in grado di riavviarsi da un'istantanea precedente scattata con quella precedente. maxParallelism È possibile riavviare l'applicazione solo senza istantanea.
Se si prevede di scalare l'applicazione a un parallelismo superiore a 128, è necessario impostarlo esplicitamente nell'maxParallelismapplicazione.
La logica di scalabilità automatica impedirà di ridimensionare un job Flink a un parallelismo che superi il parallelismo massimo del job.
Se utilizzate una scalatura automatica personalizzata o una scalatura pianificata, configuratele in modo che non superino il parallelismo massimo del lavoro.
Se scalate manualmente l'applicazione oltre il parallelismo massimo, l'applicazione non si avvia.