

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à.

# Implementazione della scalabilità delle applicazioni in Managed Service for Apache Flink
<a name="how-scaling"></a>

È 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](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/) nella documentazione di Apache Flink.

**Topics**
+ [Configura il parallelismo dell'applicazione e la KPU ParallelismPer](#how-parallelism)
+ [Allocazione delle unità di elaborazione Kinesis](#how-scaling-kpus)
+ [Aggiorna il parallelismo dell'applicazione](#how-scaling-howto)
+ [Utilizza il ridimensionamento automatico in Managed Service for Apache Flink](how-scaling-auto.md)
+ [Considerazioni su maxParallelism](#how-scaling-auto-max-parallelism)

## Configura il parallelismo dell'applicazione e la KPU ParallelismPer
<a name="how-parallelism"></a>

È 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à [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html): 
+ `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` è uguale a `ParallelismPerKPU` volte il limite di KPUs (che ha un valore predefinito di 64). Il KPUs limite 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](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

Per informazioni sull'impostazione del parallelismo delle attività per un operatore specifico, consulta [Impostazione del parallelismo: operatore](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#operator-level) nella documentazione di Apache Flink.

## Allocazione delle unità di elaborazione Kinesis
<a name="how-scaling-kpus"></a>

Managed Service for Apache Flink fornisce capacità come. KPUs 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. 

Managed Service for Apache Flink calcola il numero KPUs necessario per eseguire l'applicazione utilizzando le proprietà `Parallelism` and`ParallelismPerKPU`, come segue:

```
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](#how-scaling-howto). 

Il limite predefinito KPUs per l'applicazione è 64. Per istruzioni su come richiedere un aumento di tale limite, consulta "Richiedere un aumento del limite" in [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

**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](https://aws.amazon.com/kinesis/data-analytics/pricing/).

## Aggiorna il parallelismo dell'applicazione
<a name="how-scaling-howto"></a>

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](api-examples.md).

Il seguente esempio di richiesta per l'azione [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) 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 [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) 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 [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) disabilita il parallelismo per un'applicazione pre-esistente:

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

# Utilizza il ridimensionamento automatico in Managed Service for Apache Flink
<a name="how-scaling-auto"></a>

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 dimensionamento automatico è abilitato per impostazione predefinita. 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 (aumenta il parallelismo) se il valore massimo della CloudWatch metrica `containerCPUUtilization` è superiore o superiore al 75% per 15 minuti. Ciò significa che l'`ScaleUp`azione viene avviata quando ci sono 15 punti dati consecutivi con un periodo di 1 minuto pari o superiore al 75%. Un'`ScaleUp`azione raddoppia la durata dell'applicazione. `CurrentParallelism` `ParallelismPerKPU`non viene modificato. Di conseguenza, KPUs anche il numero di stanziati raddoppia. 
+ L'applicazione si riduce (diminuisce il parallelismo) quando l'utilizzo della CPU rimane inferiore al 10% per sei ore. Ciò significa che l'`ScaleDown`azione viene avviata quando ci sono 360 punti dati consecutivi con un periodo di 1 minuto inferiore al 10 percento. Un'`ScaleDown`azione dimezza (arrotonda per eccesso) il parallelismo dell'applicazione. `ParallelismPerKPU`non viene modificato e KPUs anche il numero di allocazioni viene dimezzato (arrotondato per eccesso). 

**Nota**  
È possibile fare riferimento a un periodo massimo di `containerCPUUtilization` oltre 1 minuto per trovare la correlazione con un datapoint utilizzato per l'azione Scaling, ma non è necessario indicare il momento esatto in cui l'azione viene inizializzata.

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`. È possibile verificare lo stato attuale dell'applicazione utilizzando le azioni o. [ DescribeApplication[ ListApplications](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_ListApplications.html)](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_DescribeApplication.html) Mentre il servizio sta scalando l'applicazione, l'unica azione API valida che puoi utilizzare è [ StopApplication](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_ListApplications.html)con il `Force` parametro impostato `true` su.

È possibile utilizzare la proprietà `AutoScalingEnabled` (parte di [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_FlinkApplicationConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_FlinkApplicationConfiguration.html)) per abilitare o disabilitare il dimensionamento automatico. Al tuo AWS account vengono addebitate le disposizioni relative al servizio gestito per KPUs Apache Flink, che è una funzione dell'`parallelism`applicazione e delle impostazioni. `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](https://aws.amazon.com/kinesis/data-analytics/pricing/). 

È 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. KPUs Per ulteriori informazioni, consulta [Servizio gestito per Apache Flink e quota di notebook Studio](limits.md).
+ 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` e `parallelismPerKPU` con l'[UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)azione della tua applicazione. Per ulteriori informazioni sull'impostazione delle impostazioni di parallelismo dell'applicazione, consulta. [Aggiorna il parallelismo dell'applicazione](how-scaling.md#how-scaling-howto)
  + È 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 [Metriche e dimensioni in Managed Service for Apache Flink](metrics-dimensions.md).

## Implementa la scalabilità automatica personalizzata
<a name="how-scaling-custom-autoscaling"></a>

Se desideri un controllo più preciso sulla scalabilità automatica o utilizzare metriche di attivazione diverse da quelle, puoi usare questo esempio: `containerCPUUtilization` 
+ [AutoScaling](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/infrastructure/AutoScaling)

  Questo esempio illustra come scalare l'applicazione Managed Service for Apache Flink utilizzando una CloudWatch metrica diversa dall'applicazione Apache Flink, incluse le metriche di Amazon MSK e Amazon Kinesis Data Streams, utilizzate come sorgenti o sink.

[Per ulteriori informazioni, consulta Monitoraggio avanzato e scalabilità automatica per Apache Flink.](https://aws.amazon.com/blogs/big-data/enhanced-monitoring-and-automatic-scaling-for-apache-flink/)

## Implementa la scalabilità automatica pianificata
<a name="how-scaling-scheduled-autoscaling"></a>

Se il carico di lavoro segue un profilo prevedibile nel tempo, potresti preferire scalare preventivamente la tua applicazione Apache Flink. Questo ridimensiona l'applicazione a un orario pianificato, invece di scalare in modo reattivo in base a una metrica. Per impostare la scalabilità verso l'alto e verso il basso a orari prestabiliti del giorno, puoi utilizzare questo esempio:
+ [ScheduledScaling](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/infrastructure/ScheduledScaling)

## Considerazioni su maxParallelism
<a name="how-scaling-auto-max-parallelism"></a>

Il parallelismo massimo che un lavoro Flink può scalare è limitato dal *minimo* `maxParallelism` tra tutti gli operatori del lavoro. Ad esempio, se si dispone di un job semplice con solo una sorgente e un sink, e l'origine ha 16 e il sink ha 8, l'applicazione non può scalare oltre il parallelismo di 8. `maxParallelism`

Per sapere come viene calcolato il valore predefinito `maxParallelism` di un operatore e come sovrascriverlo, consulta [Impostazione del parallelismo massimo nella documentazione](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#setting-the-maximum-parallelism) di Apache Flink.

Come regola di base, tieni presente che se non definisci `maxParallelism` alcun operatore e avvii l'applicazione con un parallelismo inferiore o uguale a 128, tutti gli operatori avranno un parallelismo pari a 128. `maxParallelism`

**Nota**  
Il parallelismo massimo del processo è il limite massimo di parallelismo per scalare l'applicazione mantenendo lo stato.   
Se modifichi un'applicazione esistente, l'applicazione non sarà in grado `maxParallelism` di riavviarsi da un'istantanea precedente scattata con la vecchia. `maxParallelism` È possibile riavviare l'applicazione solo senza un'istantanea.   
Se si prevede di scalare l'applicazione fino a un parallelismo maggiore di 128, è necessario impostarlo in modo esplicito nell'`maxParallelism`applicazione.
+ La logica di scalabilità automatica impedirà il ridimensionamento di un lavoro Flink a un parallelismo superiore al parallelismo massimo del lavoro.
+ Se utilizzi una scalabilità automatica personalizzata o una scalabilità pianificata, configurale in modo che non superino il parallelismo massimo del lavoro.
+ Se scalate manualmente l'applicazione oltre il parallelismo massimo, l'applicazione non si avvia.