

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Implemente a escalabilidade de aplicativos no Managed Service for Apache Flink
<a name="how-scaling"></a>

Você pode configurar a execução paralela de tarefas e a alocação de recursos para que o Amazon Managed Service for Apache Flink implemente a escalabilidade. Para obter mais informações sobre como o Apache Flink programa instâncias paralelas de tarefas, consulte [Execução paralela](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/) na Documentação do Apache Flink.

**Topics**
+ [Configurar paralelismo de aplicativos e KPU ParallelismPer](#how-parallelism)
+ [Aloque unidades de processamento do Kinesis](#how-scaling-kpus)
+ [Atualize o paralelismo do seu aplicativo](#how-scaling-howto)
+ [Use a escalabilidade automática no Managed Service for Apache Flink](how-scaling-auto.md)
+ [Considerações sobre o MaxParallelism](#how-scaling-auto-max-parallelism)

## Configurar paralelismo de aplicativos e KPU ParallelismPer
<a name="how-parallelism"></a>

Você configura a execução paralela das tarefas do aplicativo Managed Service for Apache Flink (como ler de uma fonte ou executar um operador) usando as seguintes [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html) propriedades: 
+ `Parallelism`: use esta propriedade para definir o paralelismo padrão do aplicativo Apache Flink. Todos os operadores, fontes e coletores são executados com esse paralelismo, a menos que sejam substituídos no código do aplicativo. O valor padrão é `1` e o máximo padrão é `256`.
+ `ParallelismPerKPU`: use esta propriedade para definir o número de tarefas em paralelo que podem ser programadas por unidade de processamento do Kinesis (Kinesis Processing Unit, KPU) do seu aplicativo. O padrão é `1` e o máximo é `8`. Para aplicativos que têm operações de bloqueio (por exemplo, I/O), um valor maior de `ParallelismPerKPU` leva à utilização total dos recursos da KPU.

**nota**  
O limite para `Parallelism` é igual a `ParallelismPerKPU` vezes o limite para KPUs (que tem um padrão de 64). O limite de KPUs pode ser aumentado ao solicitar um aumento de limite. Para obter instruções sobre como solicitar um aumento de limite, consulte “Para solicitar um aumento de limite” em [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

Para obter informações sobre como definir o paralelismo de tarefas para um operador específico, consulte [ Configurar o paralelismo: operador](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#operator-level) na documentação do Apache Flink.

## Aloque unidades de processamento do Kinesis
<a name="how-scaling-kpus"></a>

O Managed Service for Apache Flink provisiona a capacidade como KPUs. Uma única KPU oferece 1 vCPU e 4 GB de memória. Para cada KPU alocada, também são fornecidos 50 GB de armazenamento de aplicativos em execução. 

O Managed Service for Apache Flink calcula as KPUs necessárias para executar seu aplicativo usando as propriedades `Parallelism` e `ParallelismPerKPU`, da seguinte forma:

```
Allocated KPUs for the application = Parallelism/ParallelismPerKPU
```

O Managed Service for Apache Flink fornece rapidamente aos seus aplicativos recursos em resposta a picos no throughput ou na atividade de processamento. Ele remove recursos do seu aplicativo gradualmente após o pico de atividade ter passado. Para desativar a alocação automática de recursos, defina o valor `AutoScalingEnabled` como `false`, conforme descrito posteriormente em [Atualize o paralelismo do seu aplicativo](#how-scaling-howto). 

O limite padrão para KPUs para seu aplicativo é 64. Para obter instruções sobre como solicitar um aumento desse limite, consulte “Para solicitar um aumento de limite” em [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

**nota**  
Uma KPU adicional é cobrada para fins de orquestração. Para obter mais informações, consulte [Preço do Managed Service for Apache Flink](https://aws.amazon.com/kinesis/data-analytics/pricing/).

## Atualize o paralelismo do seu aplicativo
<a name="how-scaling-howto"></a>

Esta seção contém exemplos de solicitações de ações de API que definem o paralelismo de um aplicativo. Para ver mais exemplos e instruções sobre como usar blocos de solicitação com ações de API, consulte [Exemplo de código de API para o Managed Service for Apache Flink](api-examples.md).

O exemplo a seguir de solicitação para a ação [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) define o paralelismo quando você está criando um aplicativo:

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

O exemplo de solicitação a seguir para a ação [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) define o paralelismo para um aplicativo existente:

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

O exemplo de solicitação a seguir para a ação [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) desativa o paralelismo para um aplicativo existente:

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

## Considerações sobre o MaxParallelism
<a name="how-scaling-auto-max-parallelism"></a>

O paralelismo máximo que uma tarefa do Flink pode escalar é limitado pelo `maxParallelism` *mínimo* em todos os operadores da tarefa. Por exemplo, se você tiver um trabalho simples com apenas uma origem e um coletor, e a origem tiver um `maxParallelism` de 16 e coletor tiver 8, o aplicativo não poderá escalar além do paralelismo de 8.

Para saber como o `maxParallelism` padrão de um operador é calculado e como substituir o padrão, consulte [Como definir o paralelismo máximo](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#setting-the-maximum-parallelism) na documentação do Apache Flink.

Como regra básica, lembre-se de que, se você não definir `maxParallelism` para nenhum operador e iniciar seu aplicativo com um paralelismo menor ou igual a 128, todos os operadores terão um `maxParallelism` de 128.

**nota**  
O paralelismo máximo do trabalho é o limite superior do paralelismo para escalar seu aplicativo mantendo o estado.   
Se você modificar o `maxParallelism` de um aplicativo existente, o aplicativo não poderá ser reiniciado a partir de um snapshot anterior tirado com o `maxParallelism` antigo. Você só pode reiniciar o aplicativo sem um snapshot.   
Se planeja escalar seu aplicativo para um paralelismo maior que 128, você deve definir explicitamente o `maxParallelism` em seu aplicativo.
+ A lógica de escalabilidade automática evitará a escalar uma tarefa do Flink para um paralelismo que excederá o paralelismo máximo da tarefa.
+ Se você usar uma escalabilidade automática personalizada ou escalabilidade programada, configure-as para que não excedam o paralelismo máximo do trabalho.
+ Se você escalar manualmente seu aplicativo além do paralelismo máximo, o aplicativo falhará ao iniciar.